Почему после написания кода я чувствую, что «я бы написал лучше» через некоторое время? [закрыто]

12

Я работаю над своим хобби-проектом на C ++ более 2 лет. Всякий раз, когда я пишу модуль / функцию, я много думаю об этом. Теперь посмотрим на проблему,

do {
  --> write the code in module 'X' and test it
  --> ... forget for sometime ...
  --> revisit the same piece of code (due to some requirement)
  --> feel that "This isn't written nicely; could have been better"
} while(true);

Вот 'X'любой модуль (будь то маленький / большой / средний). Я наблюдаю, что это происходит независимо от того, сколько усилий я приложил при написании кода. Так что в основном я воздерживаюсь от просмотра рабочего кода. :)

Это общее чувство для многих людей? Является ли этот язык специфическим явлением? (Потому что в C ++ можно писать одно и то же по-разному).

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

iammilind
источник
14
Я был бы более обеспокоен, если бы никогда не обнаружил проблем со своим старым кодом. Это показывает, что ваши навыки развиваются.
Даррен Янг
1
Если посмотреть на старый код твоего и не не думаю , что «штопка, почему я не делал это еще тогда ?!», то вы не узнали достаточно , так как вы написали код.
СБИ

Ответы:

17

Это явление очень распространено и не характерно для программистов. Всякий раз, когда вы выполняете интеллектуальную задачу, вы замечаете десятки мест, где вы могли бы стать лучше - после того, как вы прошли некоторое расстояние. Спросите любого мудрого () человека WO - кто когда - либо писал диссертацию, и они скажут вам одно: «Не смотрите на него Вы будете найти ошибку на первый взгляд.»

Есть в основном две вещи, чтобы избежать цикла рефакторинга:

  1. Во время написания и проектирования постарайтесь как можно раньше понять отдаленную перспективу. Попросите коллегу взглянуть на ваш дизайн / код. Посмотри еще раз после выходных. Посмотрите на это, когда пьяный или сильный (но будьте осторожны: ничего не меняйте, пока не протрезвите).
  2. Жить с несовершенством. Если это просто не красиво, но работает хорошо (читай: хорошо выполняет все требования, в том числе расширяемость и читаемость), пусть он стоит и будет доволен своей хорошей работой, не стремясь к идеальной работе.
thiton
источник
Прочитайте это. en.wikipedia.org/wiki/Buyer's_remorse Очень полезно.
С.Лотт
3

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

Единственное, что вы можете предсказать в реальном производственном коде, это то, что это изменится. Не пытайтесь угадать, как это изменится, какие новые техники вы узнаете завтра. Короче говоря, не пытайтесь сделать ваш код "идеальным". Просто сделайте это так хорошо, как вы можете с вашими нынешними знаниями. Кроме того, убедитесь, что ваш код тщательно протестирован и расширяем.

Я трачу 20% -30% своего времени на рефакторинг существующего кода. Я работаю в технологической компании, и «менеджмент» никогда не жаловался на изменение существующего кода. Тем не менее, я понимаю, что это может быть проблемой в некоторых компаниях. У Мартина Фаулера даже есть раздел об этом в его книге по рефакторингу .

Таким образом, в моем опыте это обычное чувство, но оно не является негативным.

чип
источник
2

Каждый модуль / функция рождается и развивается в мире приоритетов. Когда этого достаточно для достижения целей внешнего мира, его часто оставляют в стагнации. Все это в конечном итоге леса в служении высшей цели. Да, мы должны быть одержимы кодом, и да, это также может привести к стагнации. Возможно, для вас было бы хорошим шагом немного сместить фокус с самого кода и больше задуматься о процессах, которые происходят внутри вас, производителя кода.

отметка
источник
2

Это общее чувство для многих людей? Является ли этот язык специфическим явлением?

Это означает, что вы расширяете свои знания и взгляды.

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

BЈовић
источник
"... вернись и улучшай свой код." - кто заплатит тебе за это? Как только ваш код заработает, двигайтесь дальше. По мере того, как вы учитесь и становитесь программистом, вы ВСЕГДА найдете лучшие способы ведения дел и почувствуете, что ваши предыдущие усилия могут быть улучшены. Не поддавайтесь желанию что-либо с этим сделать - возвращение и улучшение старого кода в большинстве случаев является пустой тратой времени.
Дауд говорит восстановить Монику
1
@ Дэвид Уоллес - Если бы никому никогда не приходилось возвращаться к старому коду, мы бы не суетились по этому поводу.
JeffO
1
«Как только ваш код заработает, двигайтесь дальше» - вы не поверите, какие ошибки я видел в
рабочем
@ Джефф О - это правда. Если я собираюсь поддерживать старый код, я бы решил исправить его, будь то мой код или чей-то другой. Но если нет проекта с несколькими долларами за ним, который требует поддержки этого кода, то нет никакого способа оправдать время, потраченное на его приведение в порядок. Если это не глючит, конечно.
Дауд говорит восстановить Монику
@VJovic - если в работе были ошибки, то это потому, что код НЕ работал. Я думаю, что ОП говорил о коде, который работает правильно, но безобразно.
Дауд говорит восстановить Монику
2

Я всегда думал, что человек посещает урок математики, чтобы усилить свои навыки в предыдущем уроке. Алгебра казалась сложной, пока вы не взяли Алгебру II; Тогда навыки, которые вы узнали в алгебре, стали полезными. Это то же самое в программировании, письме, деревообработке или чем-то еще.

Пройдя курс программирования, вы узнали о If-then-else, которое делало много вещей, пока вы не узнали о переключателях. Когда вы изучаете что-то новое, вы проходите эту прогрессию, каждый делает.

mhoran_psprep
источник
2

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

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


источник
1

Разработка приложения означает его улучшение и улучшение; это непрерывный процесс, поэтому во время программирования вы получаете больше опыта и знаний. Это также означает, что вы тоже разрабатываете, поэтому, оглядываясь на старый код, вы можете обнаружить, что его можно улучшить.

Если у вас нет этого чувства, это означает одно из двух:

  1. Вы все еще на том же уровне мастерства.
  2. Ваш код уже совершенен (маловероятно).
CVist
источник