Существует много разговоров о передовых практиках 1 в разработке программного обеспечения. Я видел, по крайней мере, три основных момента, которые обсуждаются как на SE, так и в других местах:
- Что считается лучшей практикой и почему?
- Стоит ли вообще обсуждать лучшие практики, потому что разумно утверждать, что никакая практика не является «лучшей»?
- Когда вы должны отказаться от лучшей практики - или, возможно, от большинства лучших практик - либо потому, что она не представляется применимой, либо из-за внешних ограничений (время, деньги и т. Д.), Которые делают компромисс невозможным?
То, что кажется гораздо реже, но чаще, чем когда-либо, является понятием здравого смысла в разработке программного обеспечения. Недавний опыт вновь поставил это понятие передо мной.
Мое первоначальное впечатление состоит в том, что это обсуждение отличается от лучших практик, но, возможно, с некоторым перекрестным опылением.
Когда я думаю о здравом смысле в целом, я имею в виду набор правил, которые вы либо усвоили, либо научили, которые дают вам основу для рассуждения и принятия решений. Следование здравому смыслу - хороший способ избежать отстрела всей ноги. Но помимо довольно низкого базового уровня, здравый смысл уступает необходимости принимать обоснованные решения, а образованные решения могут даже отвергать здравый смысл, когда доказательства кажутся достаточно убедительными. Возможно, я немного проигрываю с определением здесь, но я думаю, что оно достаточно близко, чтобы привести мой пример.
Когда я думаю о здравом смысле в разработке программного обеспечения, я думаю о всех правилах базовой гигиены, чтобы предотвратить быстрое превращение базы кода в непонятный беспорядок. В качестве примера можно привести такие вещи, как: не использовать единую глобальную структуру для поддержания и передачи состояния в рамках нетривиальной программы; не использовать имена переменных / методов / классов, которые являются просто случайным бредом; вещи, которые, вероятно, очень похожи на то, что мы стали называть антишаблонами. Там, где применение передового опыта является практическим аналогом моделей обучения, применение здравого смысла можно рассматривать как практический аналог обучения анти-шаблонам.
Имея это в виду, я хотел бы задать несколько вопросов, которые, видя ответы других, могут помочь мне объяснить мой путь через это.
Считают ли другие, что в разработке программного обеспечения существует понятие здравого смысла? Было бы интересно узнать причину в любом случае.
Если да, стоит ли это обсуждать? Это то, что мы должны настаивать так же, как мы иногда делаем с лучшими методами? Стоит ли настаивать на этом еще сильнее?
Если аналогия с анти-паттернами кажется разумной, общее правило состоит в том, что анти-паттерны используются только в том случае, если нет другого пути, и даже тогда, только в очень ограниченных обстоятельствах. Насколько гибкой должна быть возможность отклонения базы кода от здравого смысла? Кажется необоснованным, что ответ «совсем нет», потому что иногда целесообразность требует отклонений. Но это выглядит как аргумент иного рода, чем использование «наилучшей практики». Возможно это не так; если вы так не думаете, я хотел бы узнать, почему.
Это гораздо более открытый конец, и, возможно, он заслуживает отдельного дополнительного вопроса, на какие рекомендации вы бы указали, что кажется вопросом здравого смысла?
Другие мысли также приветствуются.
1 Возможно , я бы лучше назвать их «часто повторяющиеся шаблоны доменов», но название «наилучшей практики» является общим достаточно того, что все знают , что они есть, даже если они не согласны , что они есть. Если «лучшая» часть вас беспокоит, просто представьте, что я заменил «лучшие практики» чем-то менее авторитетным.