Вот еще несколько советов:
Из категории «даже не думай делать это» вот несколько плохих примеров встреченного кода:
Метод Finder возвращает объект
Проблема: в зависимости от количества найденных вхождений метод поиска возвращает число, представляющее количество вхождений - или! Если только один найденный возвращает реальный объект.
Не делай этого! Это одна из худших практик кодирования, которая вносит двусмысленность и портит код таким образом, что, когда в игру вступает другой разработчик, он или она будет ненавидеть вас за это.
Решение: Если есть необходимость в таких 2 функциях: при подсчете и извлечении экземпляра создайте 2 метода, один из которых возвращает счетчик, а другой - экземпляр, но ни один метод не выполняет оба действия.
Проблема: производная плохая практика - это когда метод поиска возвращает либо одно найденное вхождение, либо массив вхождений, если найдено более одного. Этот ленивый стиль программирования часто делается программистами, которые делают предыдущий вообще.
Решение: Имея это в моих руках, я бы возвратил массив длины 1 (один), если будет найдено только одно вхождение, и массив длиной> 1, если будет найдено больше экземпляров. Более того, если вообще не будет найдено ни одного вхождения, в зависимости от приложения будет возвращен ноль или массив длиной 0
Программирование на интерфейсе и использование ковариантных типов возврата
Проблема: программирование интерфейса и использование ковариантных типов возврата и приведение в вызывающем коде.
Решение: вместо этого используйте тот же супертип, определенный в интерфейсе, для определения переменной, которая должна указывать на возвращаемое значение. Это сохраняет программирование на подходе интерфейса и Ваш код чистым.
Классы с более чем 1000 строками представляют собой скрытую опасность
Методы с более чем 100 строками также представляют опасность!
Проблема: некоторые разработчики вкладывают слишком много функциональности в один класс / метод, будучи ленивыми, чтобы нарушить функциональность - это приводит к низкой когезии и, возможно, к высокой связи - обратный принцип очень важного в ООП!
Решение: Избегайте использования слишком большого количества внутренних / вложенных классов - эти классы должны использоваться ТОЛЬКО по мере необходимости, вам не нужно привыкать к их использованию! Их использование может привести к большему количеству проблем, таких как ограничение наследования. Ищите дубликат кода! Такой же или слишком похожий код может уже существовать в некоторой реализации супертипа или, возможно, в другом классе. Если это в другом классе, который не является супертипом, вы также нарушили правило сплоченности. Остерегайтесь статических методов - возможно, вам нужен служебный класс для добавления!
Больше на:
http://centraladvisor.com/it/oop-what-are-the-best-practices-in-oop