Инжиниринг программного обеспечения

Кодирование — это рассказывание историй

Код, как вы пишете историю

Когда у вас есть идея, вы хотите рассказать о ней всему миру. И для этого вы будете использовать язык.

Язык — это сила, которая двигает историю вперед. Мы можем мотивировать себя и других людей, делиться своим опытом и объяснять реальность. Мы используем язык, чтобы говорить о несуществующих вещах, а затем воплощаем их в жизнь. Мы можем рассказывать истории о чем угодно.

Мне нравится думать о разработке системы как о рассказывании истории. История, написанная на языке программирования.

И точно так же, как каждая история требует слушателя, код всегда предполагает читателя.

Кто такой читатель?

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

Если вы работаете над более крупным проектом, у вас есть товарищи по команде. Вы развиваете историю системы с помощью своего кода. Вы добавляете сюжетные линии и пишете новые главы. И ваши товарищи по команде будут читать код, который вы пишете.

Со временем вы и ваша команда будете тратить все больше и больше времени на перечитывание и переписывание. Со временем чистота и ясность вашего кода будут все больше и больше влиять на качество программного обеспечения.

Качество программного обеспечения

Это случилось с вами? Вы открываете какой-то код, чтобы внести изменения или внедрить новую функцию, и уже через 3 секунды понимаете, что это будет сложно.

Здесь вы сталкиваетесь с структурными качествами кода. Мы стремимся достичь таких качеств, как простота, ремонтопригодность и развиваемость. Эти качества позволяют нашему программному обеспечению служить пользователям и составляют нефункциональное качество программного обеспечения.

Функциональное качество — сюжет нашей истории. История, которая рассказывает, что программное обеспечение может сделать для своих пользователей, с функциями и потоками пользователей, вариантами использования и бизнес-правилами. А функциональное качество показывает, насколько наша история соответствует требованиям пользователей.

Качество истории начинается с умения читать и понимать ее. И у нас есть схожие ожидания от кода.

Во-первых, давайте рассмотрим сам процесс чтения.

Чтение

Как мы читаем?

То, как вы выражаете свои мысли, влияет на то, насколько читаемо ваше письмо. Но сам процесс чтения имеет свои пределы. Во-первых, мы не читаем текст, мы его сканируем.

Мы не проверяли каждый шрифт. Первая и последняя буквы должны быть на своих местах, а с остальными может возникнуть путаница.

Это касается и приговоров. Мы читаем разделяя слова на кластеры от 2 до 4 слов за раз. Большинство людей могут декодировать 4–5 фрагментов без перерыва.

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

Благодаря этой способности сканирования вы можете сказать, что код плохой, даже не читая его.

Ограничения мозга

Наш мыслительный процесс также имеет ограничения. Так работает наш мозг. И важно помнить об ограничениях мозга.

  • Мы можем обрабатывать только одну мысль за раз. Да, мы также можем быстро переключаться между мыслями.
  • У нас есть мысли, которые длятся 3 секунды.
  • В нашей рабочей памяти хранится всего 5–7 элементов.

Мы страдаем от когнитивной нагрузки. И очень важно сократить несущественные детали и структурировать информацию для лучшего понимания.

Давайте предположим, что чтение кода похоже на чтение текста, и давайте рассмотрим, как сделать текст лучше.

Текст

Статьи о том, как писать статьи.

Если мы прочитаем тему о том, как написать научно-популярную статью, мы, вероятно, найдем совет, как сделать это проще. Это также относится к написанию кода.

Всякое письмо — это вопрос решения проблемы. Это может быть проблема тона и стиля или подбора правильного слова.

Используйте простые слова. Большинство текстов по стилю написания призывают авторов избегать сложных слов. Увеличение сложности слов не делает вас умнее.

Используйте более короткие предложения. Преимущество коротких предложений в ясности. Прямота. Или, лучше, сделайте его как можно короче и как можно длиннее.

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

Переписывание. Переписывание — это суть хорошего письма. У всех нас есть предубеждение в пользу первого наброска или первой идеи. Но в только что написанном предложении всегда есть что-то, что можно улучшить.

Хороший текст похож на математику: в нем есть логика и структура.

Язык

Сюжет рассказа скрывается за словами. Вы настраиваете персонажей, строите отношения и описываете внешность.

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

Многие парадигмы в программировании и моделировании используют естественный язык как способ проектирования.

Моделирование с помощью естественного языка.

Вы можете начать исследовать бизнес-процесс с помощью Event Storming. Это фреймворк, который позволяет построить модель предметной области. И это делается путем общения между экспертами в предметной области, разработчиками, тестировщиками, дизайнерами UX и любыми другими сторонами. В результате у вас будет лучшее понимание событий, ролей и процессов в системе.

Сеансы Event Storming помогут разработать дизайн, ориентированный на предметную область. Это подход к моделированию, ориентированный на бизнес-сферу. Он использует Повсеместный язык как распространенный способ описания сферы бизнеса. Этот язык устанавливает связь между бизнес-описанием домена и его архитектурой. У вас будет высокоуровневый дизайн системы.

Вы можете использовать пользовательские истории как неформальное описание возможностей программной системы на естественном языке. Они написаны с точки зрения конечного пользователя или пользователя системы. Его можно формализовать с помощью вариантов использования для конкретных потоков и частей программного обеспечения. Обычно в виде списка действий или шагов с взаимодействиями между объектами в системе.

На уровне компонентов Чистая архитектура Роберта Мартина может быть подходом к проектированию системы. Одной из основных концепций является кричащая архитектура, в которой говорится, что архитектура системы должна говорить о том, что она делает. Это помогает создавать системы с высокой связностью и низкой связанностью.

На уровне кода система типов и полиморфизм помогут вам создавать существительные, глаголы и прилагательные вашего кодового языка.

Последние мысли

Язык — это естественный способ структурировать и объяснять информацию.

Мы используем одни и те же слова, чтобы рассказать историю, смоделировать систему и написать код приложения. Мы прячем сложность за словами-абстракциями и хотим сделать наш код более читабельным и сфокусированным.

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

Спасибо, что прочитали! Поделитесь со мной своими мыслями в LinkedIn или Twitter.

Больше чтения

Если вам понравилась эта статья, вас может заинтересовать следующее.







Первоначально опубликовано на https://pavelfokin.dev.