Наскільки важливим є хороший стиль кодування для рішення прийняти на роботу програміста? [зачинено]


15

Ще як студент мене просять переглянути код програмістів, які (не) пройшли тест (створити список номерів Фібоначчі на android).

Хоча я дуже суворий щодо стилю кодування, я просто читав про "блоковий" стиль, який хтось використовував (читайте коментарі!) .

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

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

Будь ласка: це не повинно бути дискусією про стиль кодування взагалі, а що краще. Це про важливість стилю кодування для рішення когось найняти!

Більше інформації:

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


9
Розумний. Замість того, щоб усунути "серйозну проблему з адаптацією" (яка не підтримується фактами), покладіть на неї лінію. Ніби це насправді змінює безпідставне твердження про чуже ставлення.
S.Lott

2
Стиль кодування - найменш важлива річ, з якою ви повинні мати справу. Адже це просто код.
SK-логіка

7
Я намагався прочитати ваше запитання, але виявив, що ваш формат важко дотримуватися. Чи можете ви додати до пунктів початковий відступ. 'K THX BAI
дієтабудда

2
Послідовність коду (або його відсутність) є показником. Наприклад, якщо хтось не встигає впорядкувати свій код, він, ймовірно, також не встигає з’ясувати потрібне місце для здійснення нового проекту в підривній роботі. Вони, мабуть, не встигають переробити. Список продовжується.
Кевін

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

Відповіді:


41

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

Я сподіваюся, що під стилем кодування ви не маєте на увазі лише відступ та компонування коду. Це легко вирішити з використанням форматера коду та його інтеграції у вашу систему управління версіями.

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

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


5
+1, якщо він не має або не використовує його послідовно, є "червоними прапорами", а інший стиль - це не так.
jv42

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

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

+1 за послідовність: відсутність стилю, як правило, свідчить про те, що вони не дуже багато писали. Коли ви пишете, ви вибираєте звички.
Матьє М.

1
Я ненавиджу автоматичні форматники коду, але можу погодитися з ними. Вони, здається, вибирають розриви ліній у зовсім неправильних місцях. Так, я кажу про затемнення.
Кевін

27

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

Стиль кодування (і стихання над стилем кодування) - це повна витрата часу.

Закінчуй з цим.

Я читав багато коду від безлічі різних програмістів. (Припустимо, середній розмір команди 5 і 100 різних команд. Це 500 колег.) Стиль не має значення.

Я бачив гарний, але патологічно неправильний код.

[Є межа. Навмисне затуманення є підставою для припинення. Не маючи цього, стиль - це марна трата часу.]

Стиль кодування - це "остаточний кордон"

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

Коли нічого не залишається для виправлення, можна нарешті зосередитись на стилі кодування.

До цього часу існують численні питання, які є більшими та ціннішими за стиль.


2
@WarrenFaith: Я не можу цього сказати досить рішуче. Це не має значення. Повторю свою думку. Я читав (професійно, за оплату, оплачувані години) код від сотень і сотень програмістів. Це не має значення. Це не перше враження: правильність і чіткість - це перші враження.
S.Lott

2
@WarrenFaith: Навмисна неяснота рідкість. "якщо ви просто не можете прочитати код" - це те, що може бути стільки проблемою читача, скільки письменницькою. Повторю свою думку. Я читав (професійно, за оплату, оплачувані години) код від сотень і сотень програмістів. "Просто не вмію читати" ніколи не бувало. Стиль не має значення.
S.Lott

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

4
@WarrenFaith: Я подивився зразок, і не бачу нічого там, що не було б зрозумілим. Це не відформатовано, як я можу його відформатувати, але там немає нічого, що вказувало б на те, що код не працюватиме. У цьому немає нічого незрозумілого. Немає нічого, що дозволяє припустити, що людина, яка написала, не зможе або не бажає відповідати командному стандарту. @ S.Lott має рацію. Це не має значення.
Джоел Етертон

4
І з використанням //Importantна кожному рядку. Ахм. Кожен рядок коду є важливим, або його слід видалити.
S.Lott

7

Судячи з програмістів на основі стилю кодування, це 50% снобізм та 50% незахищеність.

Мені подобається, що мій код виглядає акуратним і чистим, і це звучить так, як і хлопець, який ОП ламав у посиланні. Наш код виглядає не однаково, але ми обидва використовуємо стиль, який допомагає нам зрозуміти код, коли ми повернемось до нього. У мене абсолютно не було проблем з розумінням його коду, і я сумніваюся, що ОП це зробив також. Стиль кодування "рада" - це не що інше, як легкий дешевий знімок, де ви можете передати свою величезну мудрість щодо того, чому фігурні брекети повинні бути в наступному рядку. Це зовсім не має значення. Що важко читати код:

  • божевільні конвенції про іменування (або їх відсутність), які не описують, що вони являють собою.
  • божевільний потік програми, який ускладнює розповісти про те, що відбувається (goto, спробувати / ловити з діловою логікою тощо).
  • шалено довгі функції, які роблять більше справ, ніж мозок, може відслідковувати.

У мене є проблеми уявити будь-який код, який не робив жодної з перерахованих вище речей, але все-таки важко було прочитати, особливо з таким інструментом, як Style Cop.


7

Це смішно мати формат коду бути фактором при прийнятті рішення , щоб найняти кого - то.

  1. Є ще багато важливих факторів, які слід врахувати.
  2. Більшість розробників можуть адаптувати свій стиль.
  3. Якщо формат такий важливий, використовуйте переформатор коду та перевірку ліній.

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


4

Я думаю, у вас офіційний стиль форматування в компанії.

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

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


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

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

4

Використовуйте StyleCop

Якщо ви використовуєте Visual Studio, ви завжди можете примусово застосовувати правила StyleCop до вашої компіляції, завдяки чому ваш код буде принаймні читабельним.

Я відкидаю нечитабельний код, мабуть, нестандартний стиль, тому що його в майбутньому стане дуже важко підтримувати - навіть самими авторами. Це було доведено багато разів у минулому.

Інтегроване форматування коду CVS = оптимальне рішення

Дійсно було б чудово, якби будь-який із CVS підтримував форматування автоматичного коду під час реєстрації. Ви просто встановите пріоритети стилю, код буде відформатований перед збереженням. Це зробить специфічний для розробника стиль застарілим з точки зору форматування коду. Я можу побачити проблему, якщо деякі розробники використовують різні символи відступу. Для мене не так проблематично дивитися на інший код (і я можу його легко і швидко переформатувати), але з DIFF стає важче обробляти. Багато помилкових позитивних даних в інструменті DIFF.


Отже ... якби якась компанія винайшла свої власні стандарти кодування C #, це був би червоний прапор?
Робота

1
@Job: Не обов’язково, оскільки StyleCop дозволяє додавати додаткові правила. Я знаю, що я написав два з них, які застосовували ТАБ над просторами, яких не було в першу чергу. Але ідея полягає в тому, що стиль кодування можна примусити, що значно полегшить наявність єдиного коду.
Роберт Коритник

Що робити, якщо їх стиль знову перейшов у стиль StyleCop, а якщо вони взагалі не використовували StyleCop - це було б тоді?
Робота

@Job. Якщо хтось не пише код C # так, як якщо б це був старий Fortran (80-ти стовпчик з фіксованим компонуванням когось?), Я все ще думаю, що стилю кодування можна попросити виконувати. Якщо хтось чудовий розробник, ви можете нагадати їм вдосконалити свій стиль (або дозволити їм виправдати свій стиль над нашим ). Ось для чого призначений перегляд коду. Будь-який код можна швидко переформатувати, але слід принаймні дотримуватися конвенцій про іменування. Але це аж ніяк не червоний прапор для прокату. Не повинно бути.
Роберт Коритник

3

Далі нижче наступні набагато важливіші деталі:

  • Team Fit
  • Можливості вирішення проблеми
  • Зв'язок

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

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


У моєму випадку це часто єдине, що я бачу від хлопця ...
WarrenFaith

@WarrenFaith - Гаразд, але ви ніколи не приймете одноразове рішення найняти когось на основі такої мало інформації, чи не так? Вас просто запитують про думку.
pdr

Правда. Я висловлюю свою думку з технічної точки зору, і м'які навички також важливі. І ми лише тестуємо хлопців, які хоча б пройшли тест на м'яку майстерність в інтерв'ю. Але мені цікаво про вплив стилю кодування на мою думку ...
WarrenFaith

@WarrenFaith - у вашій позиції я б це зазначив, але як бічне значення, а не щось велике значення.
pdr

Я в основному просто складаю список «проти» і «проти» і пояснюю та обґрунтовую це для нашого CTO. Остаточне рішення залежить від нього ...
WarrenFaith

3

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

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

Як сказали інші, проблема з адаптацією може бути єдиною проблемою.


0

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

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

Якщо ви не можете ввімкнути свій розум, використовуючи стиль паскаль замість обкладинки в стилі верблюда, то вам, можливо, виникнуть проблеми з запам'ятовуванням, щоб почати нову партію кави, якби ви взяли останню чашку. Така річ може бути дійсно шкідливою для команди.

(І так, я - кофеїнова залежність.)


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

?? "сильний аргумент проти цієї людини" ... "насправді не турбуйтеся про стиль кодування". Що це таке? Це має значення чи ні? Важко сказати з відповіді, яка ваша порада. Не могли б ви уточнити, будь ласка?
S.Lott

@ S.Lott: Що це? - Ну, і те, звичайно. Поганий стиль кодування - це погана звичка, більшість людей можуть навчитися його проливати. Коли вони не можуть (або не захочуть) дізнатися, що у вас є проблеми.
Треб

0

На мою думку, хороший стиль коду є необхідним для роботи програміста.

Добрий стиль коду - питання особистого розвитку. Це показник, якого рівня цей програміст вже досяг.

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

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

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