Какая особенность наиболее важна для хорошего рутины?

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

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

12.12.2008 21:52:47
Я обнаружил главный вопрос здесь ... Что вы думаете?
Jon Ericson 12.12.2008 22:01:28
-1: я думаю, что есть несколько аспектов качества, и выбор одного из них бесполезен. Есть "удовлетворение потребностей", "производительность", "ремонтопригодность", "адаптивность" и "стоимость владения", которые являются ортогональными. Поднимать один кажется плохой идеей.
S.Lott 12.12.2008 22:11:14
Вы, очевидно, правы! Одной единственной характеристики недостаточно, чтобы составить хорошую рутину. Идея состоит в том, чтобы выделить все эти функции. Таким образом, вы можете написать ответ для каждого из них.
Ola Eldøy 12.12.2008 22:15:41
«Чтобы вы могли написать ответ для каждого из них». Это именно то, что я отвергаю как не практичный или даже полезный. Поскольку контекст определяет относительное ранжирование различных атрибутов, возможного ответа за пределами конкретного проекта / проблемной области нет.
S.Lott 12.12.2008 22:23:09
С.Лотт Мне кажется, вы думаете на другом уровне, чем уровень рутины. Большинство характеристик, которые отличают хорошую рутину от плохой, ортогональны критериям, которые вы упомянули в своем первом комментарии. Например, как доброе имя или единственная цель влияют на производительность или стоимость владения?
Vinko Vrsalovic 12.12.2008 22:29:37
20 ОТВЕТОВ
РЕШЕНИЕ

Я думаю, что наиболее важным критерием будет то, что у него есть единственная цель.

После этого он удовлетворяет этой цели (и только этой цели) правильно.

16
12.12.2008 22:00:10
Это два критерия ;-) Я бы сказал, что единственная цель - самая важная.
Joachim Sauer 12.12.2008 21:59:22
Да, я согласен. У меня даже было так сначала :-)
Vinko Vrsalovic 12.12.2008 22:01:47

Это должно быть атомно

1
12.12.2008 21:53:53

Строки кода.

1
12.12.2008 21:54:49

Имена процедур самокомментирования.

Примеры: GetStoreFromAddress GetCarsByMake

8
12.12.2008 21:55:06
Я согласен, но CamelCasing либо имена переменных, либо методов сосет мертвых кроликов.
innaM 7.01.2009 14:50:27

Это должно быть легко проверено модулем.

4
12.12.2008 21:55:24

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

3
12.12.2008 21:55:46

Количество вещей, которые он пытается сделать.

Если это не совсем 1, то у вас, вероятно, есть проблема.

3
12.12.2008 21:56:01

Имя подпрограммы сопоставляет один к одному ее функциональности.

Удивительно, как часто функция X выполняет X, а также Y, или большую часть X, но не всю X.

4
12.12.2008 21:56:42

Вы должны отслеживать количество правок, необходимых после того, как процедура была введена в действие. «Хорошая» рутина - это та, в которой требуется несколько правок. «Плохая» рутина определенно подтверждается, когда требуется куча исправлений.

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

1
12.12.2008 21:56:53

хорошая обработка ошибок (надежность)

2
12.12.2008 21:57:52

Он выполняет одну функцию или делегирует несколько функций другим функциям.

1
12.12.2008 21:58:10

Ясность - легко понять

1
12.12.2008 21:59:08

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

  1. Интуитивность Насколько интуитивно понятен мой набор инструкций - поймут ли люди цель без необходимости разбираться с большим количеством документации?

  2. Ортогональность Насколько ортогональны мои процедуры? Каждый из них выполняет одну конкретную задачу, или есть несколько (но немного разных) способов сделать одно и то же? Если таковые имеются, это плохо, и API, вероятно, необходимо изменить.

  3. Компактность Сколько API требуется для выполнения простых задач? Нужно ли многому научиться, чтобы что-то сделать, или мне достаточно всего лишь пары подпрограмм, которые делают что-то интуитивно понятное и мощное? Вам нужно взвесить этот компромисс с ортогональностью, чтобы найти хороший баланс для вашего конкретного домена.

1
12.12.2008 22:00:50
Это мило. Почему бы тогда не разделить его на три ответа?
Ola Eldøy 12.12.2008 22:08:28
Может быть, я не должен был отвечать на вопрос, потому что я думаю, что это упрощает. Я говорю, что много раз вы не можете рассматривать рутину в каком-либо значимом смысле. Эти три идут вместе для рассмотрения всех процедур в модуле или API.
Todd Gamblin 12.12.2008 22:14:35
Спасибо за ваш вклад, хотя. Точки, которые вы сделали, очень хорошие!
Ola Eldøy 12.12.2008 22:17:57
Я не согласен. Вы, конечно, можете проанализировать одну рутину и сказать, плохая она или рутина. Вы можете (и должны) также анализировать на уровне API, но это просто другой уровень.
Vinko Vrsalovic 12.12.2008 22:20:30

Из названия подпрограммы вы можете сказать, что делает подпрограмма (и когда вы проверяете код, вы понимаете, что были правы ;-)

1
12.12.2008 22:01:17

Там нет ни одного критерия , который отличает хорошую рутину от плохого.

Среди критериев:

  • концептуальная целостность: она делает то, что можно описать в простой короткой форме, одним предложением или абзацем;
  • слабая связь: его поведение не чувствительно к тому, что происходит в коде вокруг него;
  • разумный размер: длинные процедуры труднее читать и понимать, и они с меньшей вероятностью будут иметь хорошую концептуальную целостность;
  • Критерий Парнаса: они «скрывают» одну вещь, которая может измениться, так что изменения требований имеют ограниченное влияние на остальную часть системы.
4
12.12.2008 22:01:47
Тогда ты мог бы написать четыре ответа, а? ;)
Ola Eldøy 12.12.2008 22:07:56
Это означало бы, что я согласен с тем, что одна характеристика может характеризовать хорошую рутину. Я не буду.
Charlie Martin 13.12.2008 00:26:58
Я не вижу это таким образом. По моему мнению, выделение одной характеристики за раз не означает, что мы считаем достаточной любую отдельную характеристику. Это всего лишь метод, с помощью которого мы можем голосовать за те, которые мы считаем важными.
Ola Eldøy 13.12.2008 04:38:02
Ты дурак! Вы нарушили одну характеристику в правиле ответа!
titaniumdecoy 13.12.2008 04:46:38

Рутина использует постоянный уровень абстракции во всем.

1
12.12.2008 22:16:21

Это не должно иметь неожиданных побочных эффектов.

3
15.12.2008 15:56:54

Я бы сказал, хорошо документированные (и фактически соблюдаются) условия до и после.

1
15.12.2008 15:59:46

краткость

(это должен был быть полу-забавный ответ, но ТАК не позволил бы публиковать одно слово самостоятельно!)

2
7.01.2009 14:47:18

Единственная точка возврата

0
7.01.2009 14:53:22