Что оправдывает выбор метода или класса?

Скажем, вам нужно поменять строку.

Вы можете сделать метод с именем reverseString. Но не могли бы вы создать класс с именем StringReverser? Если нет, какие критерии вы используете, чтобы решить, что класс должен быть сделан?

PS: Это может коснуться темы системного анализа. Если вы знакомы с некоторыми вопросами или практическими правилами, которые четко отвечают на вопрос, пожалуйста, поделитесь.

2 ответа

Решение

Создавайте экземпляр класса, только если у вас есть состояние экземпляра: то есть, если вы представляете постоянный объект в памяти.

Я бы только создал StringReverser Класс, если для обращения строки требуется постоянное состояние или конфигурация - но я не могу думать ни о каком, поэтому я бы не стал.

Но рассмотрим разницу между методом String.Concat(params String[] strings) и класс StringBuilderоба делают одно и то же (объединяют строки вместе), но StringBuilder имеет статус, что вы можете передавать между потребителями, а это не то, что вы можете сделать с .Concat метод.

Это суждение.

Здесь мы рассмотрим одну функцию, которая выполняет одну операцию и не требует состояния. Кроме того, нет необходимости в полиморфном поведении. В этих условиях я бы создал статический класс [1] или модуль с именем StringUtilsи разместил бы функцию там. Я бы поместил другие подобные функции в тот же класс / модуль.

[1] Под "статическим" я подразумеваю класс, который полностью состоит из статических методов.

Другие вопросы по тегам