Какая характеристика наиболее важна для хорошего распорядка дня?
-
21-08-2019 - |
Вопрос
Подпрограммы, процедуры, методы - как бы вы их ни называли, они являются важными строительными блоками для нас, разработчиков.Какую характеристику вы бы назвали самой важной ?
(Указав одну характеристику для каждого ответа, можно проголосовать за них индивидуально. Т.е. цель этого вопроса - не выделить одну характеристику, а, скорее, выделить все важные.)
Решение
Я думаю, что наиболее важным критерием будет то, что он преследует одну цель.
После этого он правильно выполняет эту (и только эту) цель.
Другие советы
Самокомментируемые имена процедур.
Примеры: GetStoreFromAddress GetCarsByMake
Он должен быть легко протестирован.
Название подпрограммы однозначно соответствует ее функциональности.
Удивительно, как часто функция X выполняет X, а также Y или большую часть X, но не все X.
Не существует единого критерия, который отличал бы хороший распорядок от плохого.
Среди критериев:
- концептуальная целостность: имеет то, что можно описать в простая короткая форма, одно предложение или абзац;
- слабая связь: его поведение не чувствителен к тому, что происходит в коде вокруг него;
- разумный размер: длинные процедуры труднее читать и понимать, и меньше шансов получить хорошие концептуальная целостность;
- Критерий Парнаса: они «прячутся» одна вещь, которая может измениться, так что изменения требований ограничили влияние на остальную систему.
разработан таким образом, чтобы его легко читали и понимали люди - без него гораздо сложнее изменить его, чтобы он имел все другие замечательные атрибуты, которые будут перечислены здесь
Количество действий, которые он пытается сделать.
Если это не совсем 1, вероятно, у вас проблема.
У этого не должно быть неожиданных побочных эффектов.
хорошая обработка ошибок (надежность)
краткость
(это должен был быть полу-забавный ответ, но ТАК не позволял публиковать одно слово само по себе!)
Он должен быть атомарным
Строки кода.
Вам следует отслеживать количество правок, необходимых после того, как процедура была введена в действие.«Хорошая» процедура - это такая, в которой требуется несколько правок.«Плохая» процедура определенно оказывается таковой, когда требуется множество исправлений.
Это легко сделать с помощью заголовка комментария к каждому вызову метода, который обновляется после каждого редактирования.
Он выполняет одно дело или делегирует несколько функций другим функциям
Четкость - легко понять
Думаю, на этот вопрос легче ответить, если рассматривать подпрограммы как часть API. Не так много процедур, которые стоят отдельно, по крайней мере, в действительно полезной системе. Так что, честно говоря, я думаю, что при написании подпрограмм нужно учитывать следующее:
Интуитивность Насколько интуитивно понятен мой набор инструкций - поймут ли люди цель, не углубляясь в большое количество документации?
Ортогональность Насколько ортогональны мои процедуры? Каждый из них выполняет одну конкретную задачу или существует несколько (но немного разных) способов сделать одно и то же? Если есть, значит, это плохо, и API, вероятно, необходимо переработать.
Компактность Сколько требуется API для выполнения простых задач? Нужно ли мне многому научиться, чтобы что-то сделать, или мне хватит пары процедур, которые делают что-то интуитивно понятное и мощное? Вам нужно взвесить компромисс между этим и ортогональностью, чтобы найти хороший баланс для вашего конкретного домена.
По названию подпрограммы вы можете сказать, что она делает (и когда вы проверите код, вы поймете, что были правы ;-)
В подпрограмме используется постоянный уровень абстракции.
Я бы сказал, что это хорошо документировано (и фактически соблюдается) до и после условий.
Единая точка возврата