Или для чего-то совершенно бесполезного:
[ -d . ] || echo "No"
Вещи, которые главным образом добиваются меня," запахи кода ".
Главным образом я чувствителен к вещам, которые идут вразрез "с хорошей практикой".
Вещи как:
Методы, которые делают вещи кроме того, что Вы думали бы с имени (например: FileExists (), который тихо удаляет нулевые файлы байта)
Несколько чрезвычайно длинных методов (знак объектной обертки вокруг процедуры)
Повторное использование переключателя/операторов выбора на том же перечислимом участнике (знак подклассов, нуждающихся в извлечении)
Партии членских переменных, которые используются для обработки, для не получения состояния (мог бы указать на потребность извлечь объект метода)
, класс А, который имеет много обязанностей (нарушение Единственного принципа Repsonsibility)
Длинные цепочки членского доступа (this.that прекрасен, this.that.theOther, прекрасен, но my.very.long.chain.of.member.accesses.for.a.result является хрупким)
Плохое именование классов
Использование слишком многих шаблонов разработки в небольшом пространстве
Упорно работать также (переписывающий функции, уже существующие в платформе, или в другом месте в том же проекте)
Плохое написание (где угодно) и грамматика (в комментариях) или комментариях, которые просто вводят в заблуждение
Найдите программиста, который испытан с кодовой базой. Попросите, чтобы они объяснили, как что-то работает.
, Если они говорят "это вызовы функции та функция", их кодекс является процессуальным.
, Если они говорят "этот класс, взаимодействует с тем классом", их кодом является OO.
Наличие всего, чему Вы возражаете, наследовало некоторый основной служебный класс именно так, можно назвать служебные методы, не имея необходимость вводить так много кода.
В рамках длинного метода разделы окружили #region / #endregion - почти в каждом случае, который я видел, тот код мог легко быть извлечен в новый метод ИЛИ должен был быть пересмотрен в некотором роде.
Чрезмерно сложные деревья наследования, где подклассы делают совсем другие вещи и только мимоходом связаны друг с другом.
Нарушение DRY - подклассы, что каждое переопределение базовый метод почти точно тем же способом, только с незначительным изменением. Пример: Я недавно работал над некоторым кодом, где подклассами, каждый переопределил базовый метод и где единственной разницей была проверка печатания ("x ThisType" по сравнению с "x, является ThatType"). Я реализовал метод в основе, которая взяла универсальный тип T, который она затем использовала в тесте. Каждый ребенок мог затем назвать базовое внедрение, передав тип, против которого оно хотело протестировать. Это обрезало приблизительно 30 строк кода от каждого из 8 различных дочерних классов.
Вот некоторые:
Одной вещью, которую я очень не хочу видеть, является базовый класс, вниз бросающий сам к производному классу. Когда Вы видите это, Вы знаете, что у Вас есть проблемы.
Другие примеры могли бы быть:
Один запах является объектами, имеющими трудно зависимости/ссылки к другим объектам, которые не являются частью их естественной иерархии объектов или связанного с доменом состава.
Пример: Скажите, что у Вас есть городское моделирование. Если объект Человека имеет свойство NearestPostOffice, Вы, вероятно, в беде.
Этот вопрос делает предположение, которое объектно-ориентированный означает хороший дизайн. Существуют случаи, где другой подход является намного более соответствующим.
По моему мнению, весь код ООП ухудшается к процессуальному кодексу по достаточно долговременному промежутку.
Предоставленный при чтении моего нового вопроса Вы могли бы понять, почему я немного заезжен.
ключевая проблема с ООП состоит в том, что оно не делает это очевидным, что Ваш объектный график конструкции должен быть независим от Вашего графа вызовов.
, После того как Вы решаете ту проблему, ООП на самом деле начинает иметь смысл. Проблема состоит в том, что очень немного команд знают об этом шаблоне разработки.
антишаблоны Разработки программного обеспечения
Объектно-ориентированные антишаблоны дизайна
Я сказал бы, что правило номер один плохого дизайна OO (и да я был виновен в нем слишком много раз!):
Сопровождаемый: