Недавний проект реконструкции некоторые мысли

Java задняя часть Шаблоны проектирования Angular.js

источник

Недавно, благодаря сочетанию факторов, мне посчастливилось взять на себя ответственность за рефакторинг проекта, и время/пространство были довольно свободными. И поскольку система более сложная, она должна быть связана с несколькими отделами развития бизнеса, что приводит к большому количеству больших и малых потребностей.Поэтому, если мой дизайн кода плохой, я столкнусь с неловкой ситуацией, когда буду работать сверхурочно, чтобы стереть свой код. приклад. Это также приводит к тому, что я не осмеливаюсь писать плохой код по своему желанию и стараюсь избегать различных «эффектов разбитого окна». Поэтому хочу записать еще несколько банальных мыслей, в основном думая, куда написать, не обращая внимания на структуру и оформление статьи.

Объектная ориентация по-прежнему является доминирующим стилем дизайна.

Здесь надо понимать, что такое объектно-ориентированное, вместо того, чтобы зазубривать по учебнику "инкапсуляция, наследование, полиморфизм". Разработка программного обеспечения — дело практики, а заучивание учебников — самое бесполезное занятие. «Инкапсуляция, наследование, полиморфизм», вероятно, наименее важны, важные из них:

  1. Что такое «инверсия управления» и что такое «внедрение зависимостей», помимо того, что мы видим это в таких фреймворках, как Spring/Angular, какое практическое просвещение дает нам разработка кода.
  2. Каковы «НАДЕЖНЫЕ» принципы, каковы практические последствия, что легко сделать, а то, что кажется легким, на самом деле трудно сделать.

Мир имеет состояние, поэтому наш код также полон различных состояний.

На самом деле это причина первого пункта и, возможно, причина популярности объектно-ориентированного стиля? Всякие грязные состояния, которые могут быть спрятаны за классом за классом, ограничивая его досягаемость.

Что такое «композиция» и что такое «композиция над наследованием»

«Комбинация лучше наследования», пока не знаю, что это значит, и более убедительного ответа не встречал. Я чувствую, что в этом предложении много чепухи, например, «высокая сплоченность, низкая связанность», что правильно, но не имеет практического эффекта. Например, "паттерн-декоратор" - это классический пример композиции. Хорошо, после разговора о "паттерне-декораторе" я, наверное, понял этот паттерн, но я все еще не понимаю конкретное значение фразы "комбинация лучше, чем наследование". Наверное, можно полагаться только на идею, не так ли?

«Наследование» не так уж плохо, «множественного наследования» можно избежать

Возьмите предыдущий абзац. Кажется, всегда находятся люди, которые противопоставляют «композицию» и «наследственность», а потом выборочно приводят несколько примеров, говоря, что «наследственность» нехороша, а «комбинация» нехороша, а потом приходят к выводу о том, что выше предложение. Этот вид статей обычно допускает ошибку «предвзятости выжившего» и обычно также содержит много личных вещей, которые не являются питательными.

На самом деле я думаю, что нет лучше или хуже, потому что это просто два разных средства.Например, вы можете использовать нож и вилку или палочки для еды.Решение зависит от сцены. Наследование не так отвратительно, как говорят большие V. Ведь это тоже метод, придуманный исходя из практических задач. Простота в использовании на самом деле очень хороша и может повторно использовать много кода.

Тем не менее, у Java есть особенно плохая идея, которая заключается в создании множества классов, а затем разработке очень сложных отношений наследования (интерфейса), послойной инкапсуляции, и реальное намерение часто скрыто за слоями кода. Более того, почти у каждого класса есть интерфейс, который называется дизайном расширения, но на самом деле он является «перепроектированием». Этот вид духа заставляет людей чувствовать себя менее счастливыми при написании Java.Я думаю, что критика Java со стороны большого V в основном относится к этому.

В любом случае, я очень доволен написанием Java. Я не хочу писать много интерфейсов, когда думаю о них. Самое главное, что я могу извлечь интерфейсы позже. В любом случае, текущие инструменты IDE настолько мощны.

«Шаблоны проектирования» полезны

Эту штуку реально нельзя заставить.Если ее заставить заниматься "режимом проектирования", то она в принципе с треском умрет.Лучше этим не заниматься. В процессе рефакторинга проекта я в основном использовал паттерны «фабричный метод и шаблонный метод», и код, который у меня получился, действительно радует глаз. Особенно режим "метод шаблона", слишком много сценариев в нашем бизнес-процессе, подходящих для этого режима, я им почти все пользуюсь, и баги меняются.

ООП и ФП

ООП немного понимает, ФП в принципе не понимает, а если не разбираешься в поле, то не комментируешь по желанию. Что касается ФП, я обнаружил, что всегда находятся люди, которые сравнивают его с ООП, перечисляют несколько недостатков ООП и несколько достоинств ФП, а затем критикуют ООП, а потом приходят к выводу, что «ФП лучше». По правде говоря, многие понятия и вещи в компьютерном мире не подходят для понимания по аналогии, точно так же, как указательный палец и средний палец человека различные действия. Если вы настаиваете на противопоставлении им, одно не может иметь другого, разве это не чепуха? Точно так же ООП и ФП изначально два метода в разных сценариях, если просто противопоставить их и сделать вывод о том, что лучше, а что хуже, это будет бессмысленно. Решение состоит в том, чтобы выполнять соответствующие функции и использовать их вместе.

Многоуровневое мышление

Любое программное обеспечение является многоуровневым, а многослойность может значительно уменьшить сложность мышления в человеческом мозгу, так что можно разработать более крупное программное обеспечение. В этом контексте такие понятия, как «модульность» и «многоуровневость», в основном являются разными акцентами определенного понятия и в основном имеют одно и то же значение.

Однако слои не должны быть слишком тонкими или слишком разорванными, что в основном приводит к обратному и приносит отягощения. «Золотая середина» — это последнее слово, и оно зависит от большого накопленного практического опыта.

«Рефакторинг», «Чистый код»

Две хорошие книги, очень влиятельные люди. Перечитывала несколько раз, и каждый раз, когда смотрю, получаю что-то новое, чем больше смотрю, тем больше постепенно впитываю часть содержания, которое автор "может только понять, но не может выразить" :).