Введение
За свою карьеру программиста я неоднократно сталкивался с 3 самыми важными принципами программирования, которые затем превратились в принцип RUM. Этот принцип является руководством для любого успешного сотрудничества между программистами и важным строительным блоком для аспекта Clean Code.
Принцип RUM, который состоит из первых букв слов «Readable», «Understandable» и «Maintainable», направлен на создание общего понимания в команде относительно процессов и решений, связанных с кодом.
Читабельность
Этот принцип касается читабельности кода. Когда мы читаем код, мы часто вырабатываем так называемые шаблоны чтения, которые помогают нам ориентироваться в коде. Эти шаблоны чтения очень важны, и важно, чтобы читатель мог быстро их распознать и выучить.
Необходимо договориться о последовательном шаблоне и следовать ему. Форматировщики и статический анализ кода часто помогают применять эти правила автоматически. Существуют также такие темы, как размещение определенных блоков кода, деклараций и переносов строк, которые также необходимо учитывать.
Лично я считаю, что полезно думать об этом как о газете. В ней у вас есть заголовки (которые должны представлять имена файлов) и подзаголовки (определения общедоступных интерфейсов), в которых вы можете легко ориентироваться. Когда дело доходит до детальной реализации, все в файле структурируется по значимости (public > private). Преимущество этого метода в том, что я могу получить хороший обзор потока, и как только я захочу узнать больше, я буду углубляться во вложенность (в идеале при прокрутке файла вниз).
Но здесь вам придется координировать свои действия с командой и найти схему, которая устроит всех, и, конечно, задокументировать ее. Чтобы новые члены команды могли понять и применить его.
Понятный
Необходимо не только читать, очень важной частью является понимание того, что вы читаете. Возможно, вы сталкивались с такой ситуацией, когда при чтении книги вы переваривали слишком много информации. К концу страницы вы уже не понимали, о чем идет речь.
Наш мозг имеет только определенный объем свободной информации, которую он может усвоить и обработать. Если емкость исчерпана, нам часто требуется перерыв, или мы быстро впадаем в туннельный режим, в котором мы можем воспринимать все, но уже не можем обработать это должным образом.
В программировании это очень важная концепция, о которой необходимо знать. Понимание кода — абсолютно важный фактор, который имеет значение. В противном случае быстро возникнут ошибки, встроенные из-за непонимания.
Этот принцип призван осветить и продемонстрировать именно это. Хорошо разделенный код полезен для обработки мозгом.
При программировании следует спрашивать себя, в какой области я нахожусь в данный момент. Как я могу сделать это доступным для других хорошими порциями, чтобы они могли легко понять это без необходимости копаться в нескольких строках криптографических вызовов?
Здесь полезно хорошо разделить код, перенести его в классы/методы или файлы (в зависимости от языка программирования) и дать извлеченной логике соответствующее имя, описывающее поведение контекста.
В результате отдельные логические блоки больше не состоят из множества сложных операций, написанных друг под другом. Вместо этого они были вынесены в отдельные развязанные области, которые можно просматривать отдельно по мере необходимости.
Есть и другие темы, которые подпадают под этот принцип, например, избегание вложенности условий, ранние возвраты, функциональный подход к программированию и многое другое.
Я лично считаю, что всегда нужно помнить о принципе KISS. Это дает хорошую точку отсчета для написания понятного кода.
Maintainable
Существенными моментами являются первые два принципа Readable и Understandable для сопровождаемости кода. Этот принцип призван сделать особый акцент на том, что код может меняться с течением времени.
Код должен быть хорошо подготовлен к возможным изменениям. Но это не означает, что вы должны продумать каждый случай и построить его настолько абстрактно, чтобы можно было собрать его по модульному принципу (если это не является целью/УТП проекта).
Скорее, речь идет об аутсорсинге критически важных ключевых компонентов и создании конвейеров. Это делается для улучшения ремонтопригодности, если проект будет длинным или станет более сложным.
В качестве примера можно привести обертывание вызовов API сторонних разработчиков, объединение параметров конфигурации, создание различных тестов, проверяющих систему на наличие ошибок, или создание конвейера сборки/развертывания.
Код должен обеспечивать хорошую точку входа для новичков в проект, а также для людей, которые долгое время не работали над ним. Этому может способствовать подробная документация и стандартизированные конвейеры.
Заключение
На мой взгляд, принцип RUM состоит из основ успешного программирования. Код должен быть хорошо читаемым, понятным и сопровождаемым.
Отдельные принципы РУМ взаимозависимы и дополняют друг друга. Эти принципы заимствуют многие уже существующие концепции и принципы, и их можно отнести к отдельным принципам РУМ.
Поддержите
Если вам понравился этот пост и вы нашли его полезным, пожалуйста, оставьте комментарий ниже.
Я постоянно над чем-то работаю, если вам интересно, не стесняйтесь следовать за мной в Twitter