В процессе разработки CloseOnion у меня возникла серия выборов технических маршрутов, и я понял, что пришло время поговорить о культуре инженерной технологии OpenOnion.
·-- 26
Как обеспечить качество кода? Как обеспечить долгосрочную надежность поставки?
Ценности OpenOnion - простота и повторяемость.
Код должен быть простым, простота - это требование к читаемости и поддерживаемости. Не надо запутывать себя в коде, мы не теряем голову.
Функциональность кода должна быть повторно используемой и модульной.
Повторное использование - это гарантия целостности системы. Это также позволяет разработчикам и пользователям оставаться минимально удивленными. Чтобы добиться повторного использования, вы, конечно же, естественным образом выберете, чтобы детали вашей реализации зависели от абстракции, а не абстракция от деталей.
Конечно, есть и другие важные вещи, такие как разделение интерфейсов, автоматизированное тестирование, непрерывная интеграция, своевременное рефакторинг. Все это гарантирует простоту и повторяемость нашего кода. Если вы хотите достичь простоты и повторяемости, то со временем вы обязательно обратите внимание на все это. Их целью является сделать код простым и повторяемым.
Я надеюсь, что в нашей будущей разработке мы всегда будем задумываться, достаточно ли простой этот код, может ли его понять кто-то с первого взгляда, без объяснений или документации. Не нужно излишне использовать трюки и синтаксический сахар, код должен быть понятен даже для дурака. Нужно задуматься, не слишком ли длинная функция, не станет ли она более ясной и понятной, если ее разделить на несколько маленьких функций. Слишком ли сильно связаны текущий файл или функциональность, является ли абстракция зависимой от деталей, и будет ли она повторно использоваться в будущем?
Каждый разработчик, пишащий код, должен задавать себе несколько вопросов:
- Достаточно ли простой код? Может ли его понять кто-то с первого взгляда?
- Легко ли поддерживать код? Изменение одной части повлияет ли на другие части?
- Обладает ли код возможностью повторного использования? Можно ли его модульно использовать в других местах?
- 代码是否过度耦合? 是否实现了细节依赖抽象的原则?
Постоянно задавая себе эти вопросы, мы можем обеспечить простоту, ясность и поддерживаемость кода, реализуя наши основные ценности: простоту и повторяемость.
Только придерживаясь этих принципов, мы можем сохранить конкурентоспособность и непрерывно предоставлять высококачественные программные продукты в постоянно меняющейся технической среде.