хорошая практика программирования - PullRequest
3 голосов
/ 30 декабря 2010

Я читаю замечательный код Рэндалла Хайда (том 2), и я нашел это:

[...] это не хорошая практика программирования, чтобы создавать монолитные приложения, в которых весь исходный код отображается в одном исходном файле (или обрабатывается одной компиляцией) [...]

Мне было интересно, почему это так плохо?


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

Спасибо, ребята;)

Ответы [ 13 ]

4 голосов
/ 30 декабря 2010

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

В начале своей карьеры я работал над географической информационной системой, которая состояла изболее миллиона строк C. Единственное, что делало его ремонтопригодным, единственное, что заставляло его работать в первую очередь, это то, что у нас была четкая разделительная линия между всем «сверху» и всем «снизу».Код «выше» реализовал пользовательские интерфейсы, специфичную для приложения обработку и т. Д., И все, что «ниже», реализовало пространственную базу данных. А разделительная линия была опубликованным API. Если вы работали «выше», вам не нужно было знать, каккод «ниже» работал, пока он следовал опубликованному API. Если вы работали «ниже», вам было все равно, как использовался ваш код, если вы реализовали опубликованный API. В какой-то момент мыдаже заменил огромный кусок «внизу», который хранил вещи в проприетарных файлах, на таблицы в базах данных SQL, и «выше» код не должен был знать или заботиться.

3 голосов
/ 30 декабря 2010

Некоторые причины:

  • Трудно понять что-то такое, что все так склеено. Ломать логика в функции облегчает понимание.
  • Разбиение логики на отдельные компоненты позволяет вам повторно использовать эти компоненты в другом месте. Иногда «в другом месте» означает «в другом месте в той же программе».
  • Вы не можете выполнить модульное тестирование чего-то, что построено монолитным способом. Ломать огромная функция (или программа) на куски позволяет тестировать эти кусочки индивидуально.
3 голосов
/ 30 декабря 2010

Невозможно прочитать, невозможно поддерживать, невозможно расширить.

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

3 голосов
/ 30 декабря 2010

Потому что все так забито.

Если у вас есть отдельные файлы для разных вещей, вы сможете найти и редактировать их гораздо быстрее.

Кроме того, если есть ошибка, вы можете найти ее проще.

3 голосов
/ 30 декабря 2010

Потому что вы быстро получаете (десятки) тысяч строк не поддерживаемого кода.

2 голосов
/ 30 декабря 2010

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

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

Также, если вам нужно протестировать отдельные компоненты (или модули), вы можете легко это сделать, не беспокоясь о других независимых модулях (если таковые имеются).

2 голосов
/ 30 декабря 2010

Хотя я понимаю, что HTML и CSS не являются «языками программирования», я полагаю, вы могли бы взглянуть на них с точки зрения наличия всех .css, .js и .html на одной странице: это затрудняет перезапуск или отладка кода.

1 голос
/ 30 декабря 2010

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

Когда вы говорите о монолитной программе в одном файле, все, о чем я могу думать, это:огромный код спагетти, который нашел свое место в Коболе и Фортране еще в тот день.Он поощряет менталитет «вырезать и вставить», который со временем только ухудшается.

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

0 голосов
/ 30 декабря 2010

Я думаю, что вы никогда не работали в большой компании, которая имеет 6000 строк кода в одном файле ... и каждые пару тысяч строк вы видите комментарии, подобные /** Do not modify this block, it's critical */, и вы думаете, что ошибка приписана исходит из этого блока. А твой менеджер говорит: «Да, посмотри в этот файл, он где-то в нем».

И код нарушает все эти прекрасные концепции ООП, имеет грязные переключатели. И, как пятьдесят участников.

Счастливчик.

0 голосов
/ 30 декабря 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...