Як інженер програмного забезпечення, наскільки важливо читати код інших?


25

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


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

1
Чому цей тег "стиль кодування"? Чи є у вас проблеми з читанням коду, оскільки він неправильно відформатований? Здатність читати код не означає, що вам потрібна здатність розуміти дуже погано відформатований або затуманений код. Спершу запустіть код через інструмент форматування, якщо він допоможе.
Брандін

Просто прочитайте статтю сьогодні вранці, яка нагадала мені це питання. Чому робота над Chrome змусила мене розробити інструмент для читання вихідного коду
Ерік Кінг

Це чудове запитання! У мене виникло наступне запитання: якщо ви працюєте головним чином над власним кодом (наприклад, як науковий програміст над невеликим проектом), як ви вважаєте хороший код для читання? Це запитували раніше: softwareengineering.stackexchange.com/questions/69892/…
Gaurav

Відповіді:


49

Це важливо.

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

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

Звідси випливає, що вам слід читати хороший код.

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

Ви також повинні вивчити алгоритми та структури даних.

Висновок: Ви завжди повинні прагнути писати код, який інші розробники можуть легко зрозуміти.


7
Слідство: Початок просто прагненням до коду записи , що ви можете легко зрозуміти :-)
gnasher729

4
Взагалі гарна відповідь, крім частини про шаблони. Більшість моделей GoF (про що думають люди, коли ви використовуєте цей термін) надмірно розроблені, занадто дрібнозернисті, надто орієнтовані на ОО або просто анти-шаблони. І тут люди звертаються сюди, запитуючи, яку з цих моделей вони повинні використовувати для свого вирішення. Будь ласка, ніколи не радить чортам витрачати свій час на візерунки.
Девід Арно

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

15

Це дуже важливо.

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

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

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


7

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

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


Також знайомство з проектом з відкритим кодом, який ви використовуєте, і спробуйте зрозуміти, як працює внутрішній код, може бути корисним
RMalke

4

Існують чіткі навички як читання, так і написання коду.

  • Один - синтаксис. Знаючи, як виглядає декларація методу.
  • Інший - умисел. Знаючи, чому метод існує і якій цілі він служить.

Щодо читання проти письма. Так, читання є важливим.
Кілька сентенцій, які допомагають багатьом із нас, є:

  • Код читається 10 разів (принаймні) щоразу, коли він пишеться.
  • Хтось читає код часто ... я в майбутньому читаю код.
  • Я б не захищав свій стиль коду більше 1 року тому, з цього часу він вдосконалювався.

ДОБРЕ. Так що це все чудово. Тепер перейдемо до того, що ви, мабуть, переживаєте.

omg, ця чудернацька величезна база коду з десятками тисяч рядків вихідного коду та класів, що мають сотні рядків із шаленими залежностями, і кожен раз, коли я намагаюся дотримуватися чогось, я повинен тримати 10 рівнів у голові, тощо, тощо.
Звук знайомий ? Так. Глибокий вдих. Розслабтесь. Це нормально. Це з чого виготовлені виробничі системи. Люди виживають (і процвітають) у цих, здавалося б, незрозумілих ситуаціях, оскільки:

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

І нарешті, хороші програмісти пишуть змістовні повідомлення про фіксацію, коли здійснюють зміни в системах управління вихідними версіями. (Сміливо додайте відповіді)
rwong

1

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

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

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

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


0

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

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

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

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


0

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

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

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