Чи слід завжди використовувати найкращі практики кодування [закрито]


20

Чи завжди архітектура програмного забезпечення кодує найкращі практики чи практичні стосунки щодо побудованого додатка?

Якщо я будую двосторінковий веб-додаток, який може жити 5 років і має 2 вдосконалення за ці 5 років, чи повинен я кодувати введення залежностей, схеми дизайну, контролер перегляду моделей з переглядаючими моделями тощо


53
Перевиробництво - не найкраща практика.
5gon12eder

18
Не існує єдиної "найкращої практики", яка застосовується до всіх програмних засобів у будь-яких ситуаціях. Вам доведеться оцінити, що дає вам найкращу виплату за вартість, що стосується вашої конкретної ситуації.
whatsisname

10
Будьте прагматичним програмістом. Це повинно вести вас вниз по шляху найменшого опору.
Джон Рейнор

3
Чи можете ви надати визначення найкращої практики? Багато відповідей, схоже, переплутали їх з якоюсь буквальною інтерпретацією, яку вони створили.
JeffO

5
Найкраще завжди використовувати найкращі практики.
Гуска

Відповіді:


40

Чи слід завжди використовувати найкращі практики кодування

Завжди? Ні, це нерозумно.

Найкращі практики - це вказівки. Для більшості людей, у більшості ситуацій, якщо їх реалізувати з певною тонкістю, вони дадуть найкращі результати. Вони там, де ви починаєте, розглядаючи рішення. Але знайдуться місця, де найкращі практики можна і потрібно ігнорувати, оскільки є кращі рішення.

Проблема полягає в тому, що люди не бачать майбутнього. І початківці (і купа не новачок) неминуче думають, що вони перебувають у тому спеціальному сценарії, коли правила до них не поширюються. Коли ви сумніваєтесь, використовуйте кращі практики. Багаторічні дискусії та досвід у багатьох тонн інженерів розумніші, ніж ви чи я, визнали, що вони дають стабільно хороші результати. Але ніхто (або майже ніхто) з них не знає вашої конкретної проблеми так само добре, як ви. Іноді ви стикаєтеся з винятковими випадками, коли правила можуть бути зігнуті.


12
... Але визначте "кращу практику".
svidgen

4
Я думаю, що початківцям більше властиво робити речі «правильно» і сліпо слідувати деяким найкращим практикам (наприклад, програмним зразкам), не розуміючи, чому вони існують, і як ними користуватися. Можливо, це другий етап просвітлення, перший етап - "я не знаю, що роблю".
Роберт Харві

19
@RobertHarvey - спочатку ти дізнаєшся, що робити, потім дізнаєшся, чому це робиш, потім дізнаєшся, чому цього не робиш
HorusKol

1
@HorusKol це, можливо, одна з найглибших речей, які я коли-небудь читав.
Джаред Сміт

+1 для "люди не бачать майбутнього"
Tulains Córdova

29

Так. Це само собою зрозуміло. Чому б ти не робив того, що найкраще?

Але це не питання. Важкою частиною є з’ясування того, що є найкращою практикою, адже для того, щоб відповісти, що вам потрібно точно знати, які вимоги ви маєте і як проект, ймовірно, розвиватиметься роками, і це нелегко важко.

Однак одне хороше правило: ніколи не найкраща практика приймати назви групи дизайнерських моделей і просто заважати їх, не замислюючись.

Крім цього, на ваше питання дійсно не можна відповісти. Визначити, що саме є «найкращою практикою» для даної ситуації, - це те, чим бути інженером програмного забезпечення. Вам доведеться звузити це, щоб отримати кращі відповіді.


6
Ваша відповідь ухилилася від моєї голоси лише через ваш третій абзац.
Роберт Харві

4
Я кину підсумки для третього, але лише тому, що це найкраща практика для цього. <Grin & Duck>
Blrfl

5
Моя пропозиція стосується всіх чотирьох абзаців однаково.
Квомплусон

4
"кращі практики" - це ідіоматичне вираження в англійській дискусії інженерії програмного забезпечення, і воно означає щось інше, ніж те, що ця відповідь трактує, що означає "найкраще можливе рішення даної проблеми". Так, наприклад, "використовувати джерело управління" описується як "найкраща практика" незалежно від того, існує чи не існує якась проблема, щодо якої управління джерелом не є частиною рішення, тобто незалежно від того, чи справді це завжди найкраще. Це може бути жахливе зловживання мовою, але ми дотримуємося цього.
Стів Джессоп

1
@SteveJessop Я це знаю. Однак існує багато "найкращих практик", а іноді вони конфліктують. Ключовим є контекст та сфера застосування. Завжди є щось, що робить вашу ситуацію особливою. Тільки усвідомивши, які саме ваші вимоги є і які ваші обмеження, ви зможете визначити, яка «найкраща практика» найбільше стосується вашої ситуації. Супер надуманий приклад: використання управління джерелом - найкраща практика, БІЛЬШЕ хтось загрожує підірвати землю, якщо ви використовуєте управління джерелами. Це був би додатковий контекст, який змінює те, що вважатиметься найкращою практикою.
сара

11

Найкраща практика - це те, що найбільш ефективно відповідає функціональним та нефункціональним вимогам вашого програмного забезпечення щодо функцій, ремонтопридатності, продуктивності тощо. Якщо така практика трапляється узгоджуватись із деяким "галузевим стандартом", це приголомшливо. Але якщо цього немає, прагматизм перемагає.

Там, де я зараз працюю, ми створюємо новий веб-інтерфейс для нашого продукту з нуля. Це ні в якому разі не буде ВІДПОВІДНО; він використовує виключно POST. Він не є багаторівневим, не використовує жодних мікросервісів і не використовує базу даних NoSQL. У нього немає такої архітектури, як Enterprise Java.

Іншими словами, це зовсім не хіп.

Але він містить сучасний фреймворк HTML5, який має углоподібну прив'язку даних, автоматичне масштабування до різних типів пристроїв, таких як мобільний та настільний комп'ютери, інтеграцію з Kendo UI Telerik, щоб зробити все важким підйомом, і повністю зашифрований і захищений канал передачі даних.

Найкраще, що це буде зроблено через 30 днів, подвиг, який потребує армії розробників Java в архітектурі Enterprise за рік. Код ES6 / Typescript; це найчистіший код, який я коли-небудь бачив.


Я думаю, що ваша відповідь ілюструє точку, яку я намагався зробити у своїй… Принаймні, я так думаю. +1 ... хоча я все ще VTCing це питання через відсутність деталізації!
svidgen

Здається, мій вид проекту! Втомлення від мод з’являється в розвитку.
Метт Лейсі

RE Telerik: слово попередження про деякі їх віджети, DateTimePicker є жахливим, коли використовується разом із Angular, якщо ви хочете взагалі змінити дати з кутової сторони.
Ден Комора

@DanPantry: Я буду пам'ятати про це.
Роберт Харві

3

Ні . Найкращі практики - це речі, які, як правило, вважаються найкращими справами у 99% часу, але це не означає, що вони завжди застосовуються до кожної ситуації.

Як розробник, ваша робота - знати та використовувати найкращі практики, а також знати, коли це безпечно відкинути.

Це не повинно бути саморекламою, але я нещодавно написав допис у блозі, пов’язаний з моєю роботою на платформі Salesforce.com, який детально описав один із цих випадків . Одне із золотих правил - «Ніколи не роби запит всередині циклу», але останнім часом, вперше за 7 років роботи над платформою, я мав цілком поважну причину не дотримуватися цього правила.

Суть полягає в тому, що платформа має обмеження щодо кількості запитів, які ви можете виконувати в заданому контексті виконання, але в цьому випадку мені довелося здійснити запит всередині циклу, щоб уникнути втрати місця в купі, і я знав, що я буду в межах запиту ліміт.

Так це рідко, але бувають випадки, коли найкращі практики не стосуються сценарію, тому, якщо вони не підходять, не змушуйте їх.


2

Я припускаю, що під «найкращими методами» ви маєте на увазі деякий перелік правил, які хтось написав у книзі. Звичайно, якщо ви маєте на увазі словосполучення буквально, то, звичайно, завжди слід писати найкращий код, який ви можете.

Чи потрібно зазначити, що не існує єдиного загальновизнаного набору "найкращих практик"? Для будь-якого правила, просуваного одним експертом, майже завжди можна знайти іншого експерта з рівними повноваженнями, який каже щось інше.

Але до суті: Коротка відповідь: зазвичай, але не завжди.

Кожне поле має свої «найкращі практики» та «рішення для підручників». Вони представляють накопичений досвід і мудрість багатьох, багатьох людей протягом багатьох, багатьох років, і їх не слід ігнорувати. АЛЕ! Завжди існують особливі обставини, облямування справ і т. Д. Справді дієздатна людина в будь-якій галузі знає, коли слід дотримуватися правил і коли їх порушувати.

Я б сказав взагалі: Почніть з дотримання правил підручника. Якщо дотримання правил підручника призводить до неприємностей - зайвої складності, поганої роботи та будь-якого іншого, - тоді подумайте, чи порушити це правило це одноразово не може бути кращою ідеєю.

Якщо ви ігноруєте правила і їдете туди, куди вас приводить ваша примха моменту, ваш код, швидше за все, буде змішаним. Як би ви не розумні, ви не перший програміст у світі. Має сенс вчитися на досвіді інших. Ось чому в нашому повсякденному житті є батьки, вчителі та проповідники: тому нам не доведеться повторювати кожну дурну помилку, щоб дізнатися, що це дурна помилка.

Але якщо ви по-рабськи дотримуєтесь переліку правил з якоїсь книги в 100% часу, ви часто опинитесь забивати квадратний кілочок у круглу лунку. Люди, які писали правила, можливо, не стикалися з випадками, подібними до вашого. І навіть якщо вони є, якщо це досить рідко, вони, можливо, проігнорували це. Правило, яке працює 80% часу, є прекрасним правилом - якщо ви розумієте, що воно працює 80% часу, а не 100% часу.

Я написав книгу про дизайн баз даних, яка включає безліч правил, яких я раджу дизайнерам баз даних дотримуватися. (Я утримаюсь від того, щоб дати назву, щоб не виглядати, що я безсоромно ковзаю в саморекламі.) Я, звичайно, закликаю всіх, хто хоче створити базу даних, читати книгу, як у мене, і вивчати все, що можуть, з неї. . Але КУРСУ є випадки, коли ви повинні порушувати правила, які я перелічу.

Я колись написав документ із стандартів програмування для команди розробників, яку я очолював у той час. І останнє правило виглядало приблизно так: "Якщо у вас є вагомі причини порушити одне з перерахованих вище правил, тоді продовжуйте, АЛЕ ви повинні включити у свій код коментар, що пояснює, чому ви порушили правило. Якщо ви не можете прийти з поважною причиною, тоді дотримуйтесь правила. Якщо писати коментар - це більше проблем, ніж дотримуватися правила, то дотримуйтесь правила ". У нас було лише кілька разів, коли хтось вважав, що порушувати правило, варте клопоту, щоб пояснити, чому.


1

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

Так, поки у вас немає причини цього не робити. Це має бути вагомою причиною того, що ви серйозно подумали і застосували до обставин та обмежень цього завдання. Це означає, що ви повністю розумієте практику та вмієте її застосовувати. Давайте не вникати в це поняття, що якщо ви цього не розумієте, то це не повинно бути найкращим мисленням. Див. Визначення.

Ви не завжди будете робити те, що найкраще. Коли начальник каже вам: "Відправте цю лайну, або вас звільнять!" Ви відправте його і, ймовірно, підете шукати іншу роботу, але ви все одно будете відправляти її. Іноді ви виявите, що робите щось досить добре. Звичайно, ти не хочеш цим звичати, але іноді доводиться котити вагони, і ти не можеш турбуватися про те, щоб коні були сліпими.



1

Деякі речі важливі, інші - ні.

Ви повинні налаштувати свій вибір мови та стилю відповідно до проблеми.

Наприклад, "Найкраща практика" для обробки винятків може завжди полягати у винятках та реєструвати їх, але при створенні одиничного тесту найкращою практикою є часто дозволяти їх викидати, щоб блок тестування блоку міг правильно повідомляти про них.

З іншого боку, врахуйте правило "DRY". Прагнення до коду, який не повторюється, завжди добре не тільки з очевидних причин, але й тому, що чим більше ви кодуєте таким чином, тим кращим кодером ви стаєте - це прекрасний спосіб розширити свої навички кодування / мислення. замість ваших навичок друку та копіювання / вставки, і, зрештою, вам буде краще переглядати свій код (навіть коли ви очікували, що він буде викинутий код), якщо ви будете дотримуватися певних правил.

Підсумовуючи, будьте гнучкими, але не просто кодуйте нечитабельні сміття, оскільки ви думаєте, що це код, що викидається.


1

Я спробую розглянути з іншого погляду.

Сьогоднішні сучасні рамки дозволяють дуже легко створити базовий проект з mvc, залежністю, багатошаровою архітектурою тощо (тут любитель весняного завантаження). Я б сказав, почніть зі створеної бази та користуйтеся наданими вам інструментами, поки не натрапите на щось, що потребує рішення ручної роботи. Тоді ви можете вирізати кути з цих кращих практик.

Не важче використовувати щось на зразок Spring Boot для веб-програми для двох сторінок, а потім прокручувати власні сервлети, jdbc-запити та інші речі.


1

На мій досвід є лише одна найкраща практика, яку я вважаю обов'язковою:

Нехай це буде просто, тупо (KISS)

Іншими словами: які б інструменти, API, архітектура та інше ви не вибрали - якщо ви будете простою, швидше буде працювати в майбутньому, мати менше помилок, бути швидким, ефективною пам’яттю та всім іншим, що ви хочете.

Всі інші речі, про які люди говорять: Принципи, зразки, практики тощо - я вважаю, що це підбір інструментів, з яких я можу вибрати, вибираючи ті, які найкраще відповідають проекту, над яким я працюю. Всі вони надають прийоми та ідеї для вирішення проблем. Хитрість полягає в тому, щоб з’ясувати, чи є у вас проблеми в першу чергу.


0

Найкращі "Найкращі практики" завжди містять розділ, у якому слід використовувати свій інтелект та досвід, щоб визначити, коли пункти в посібнику є невідповідними. Вони також можуть містити розділ про перегляд, затвердження та документування таких винятків та внесення їх до складу «найкращих» практик.


0

Чи завжди архітектура програмного забезпечення кодує найкращі практики чи практичні стосунки щодо побудованого додатка?

В теорії, так.

У реальному світі [все-таки] так, доки ви можете собі це дозволити.

Що, звичайно, означає «Ні».

Тимчасовий та грошовий тиск завжди намагатиметься підштовхнути вас до «швидкого та брудного» рішення, оскільки воно забезпечує «кращу» цінність для клієнта. Те, як це реалізується, не цікавить ні клієнта, ні їхніх бухгалтерів. Якщо ти можеш зробити роботу [погано] за два дні або ідеально за три місяці, а ти думаєш, що вони тебе просять?

Розрив між двома найкращими практиками та тим, що вам доведеться "піти" - називається "технічний борг"; це цілком прийнятно, якщо у вас є план "погасити" його, тобто повернутися і вдосконалити справи пізніше. Знову ж таки, не те, на що ви завжди (коли-небудь?) Отримуєте бюджет.

Одна з тактик - випустити ранню, бета-версію, з виправленням "швидкого", але забезпечити пріоритетність необхідних архітектурних удосконалень перед "повним" випуском. Знову ж таки, не те, що завжди (коли-небудь?) Робиш.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.