Что относительно этого:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
Бесплатная функция / функция-член
Я бы сделал их возможными бесплатными функциями (им не нужен доступ к внутренним компонентам класса). Если они работают с набором атрибутов или нуждаются в доступе к другим членам, сделайте их функцией-членом.
Доступ
Если код имеет смысл только в этой области и не будет использоваться из другого кода, сделайте их private : private, если он является членом, или реализован в безымянном пространстве имен, если это бесплатная функция.
Если другой код выиграет от использования кода, опубликуйте его в интерфейсе. Это означает сделать его защищенным, если он является членом или имеет бесплатную функцию, доступную через заголовок в именованном пространстве имен (или глобальном пространстве имен).
Обычно я делаю вспомогательные подпрограммы "бесплатными" подпрограммами в автономном пространстве имен, если это возможно. Таким образом, я не усложняю интерфейс (отключенный в файле * .h) вещами, о которых клиентам не нужно беспокоиться.
Тем не менее, вы должны быть осторожны, чтобы таким образом не ввести невозможность повторного входа. Например, путем изменения глобальных объектов данных или статических локальных переменных, а не членов класса. Если вам нужно это сделать, лучше сделать его полноценным членом класса.
Я обычно делаю их защищенными
или частными
функциями-членами. Это будет зависеть от того, планируете ли вы создать класс и переопределить функции.
Если они являются достаточно общими функциями, которые используются в других классах, переместите их в статические функции, содержащиеся в общем классе или отдельном объекте, который ваш класс использует.
Я думаю, вам следует запретить отображение диалогового окна загрузки. Вот один из способов сделать это:
Код Javascript заставляет ваш элемент управления WebBrowser переходить к определенному URL-адресу (что может вызвать появление диалогового окна загрузки).
Чтобы предотвратить фактический переход элемента управления WebBrowser к этому URL-адресу, прикрепите обработчик событий к событию Navigating.
В событии Navigating вам нужно будет проанализировать, является ли это действительным действием Navigating, которое вы хотите остановить (это URL-адрес загрузки, возможно, проверьте расширение файла, должен быть узнаваемый формат). Для этого используйте WebBrowserNavigatingEventArgs.Url.
Если это правильный URL, остановите навигацию, установив свойство WebBrowserNavigatingEventArgs.Cancel. См. Мой ответ здесь , чтобы узнать почему.
Тот факт, что вы упоминаете бесплатные функции, заставляет меня думать, что «множество других операторов» не требует доступа к данным класса. Если да, сделайте их бесплатными. Это снижает сложность заголовка вашего класса, а бесплатные функции проще использовать в стандартных алгоритмах (возможно, std :: for_each, поскольку вы все равно работаете с векторами?).
Подумайте о размахе. Будут ли эти функции использоваться в другом классе или где-то еще? Должны ли они быть общедоступными?
Мне кажется, что они должны быть частными функциями-членами, но все зависит от вашей общей структуры области видимости.
Функции-члены, конечно, если исходная функция имела смысл как функция-член.
Частный / защищенный IMHO зависит от того, как используется их функциональность: если операция исходной функции все еще требуется, а рефакторинг заключается исключительно в том, чтобы сделать код более чистым, затем сделать их защищенными или частными и вызывать их из обычной функции. Вы получите рефакторинг, но при этом сохраните открытый интерфейс класса нетронутым.