Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как вы пишете код в продакшене?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Tronix286
Настает время, когда проще из различных кусков копи-пастой собрать готовый проект с минимумом правок - там закоментил, тут немного китайского кода. При этом осознаешь, что это полнейший говнокод, треш и угар, так писать ни в коем случае нельзя, и все надо переписать с нуля в идеале, но лень и вроде работает - не трож, а то перестанет. Cроки и вроде работает. Что это? Я один такой?
DASM
Не один. Код ядра Линукса например считаю уродливым, но не смог бы даже так. При это Линукс использую.Если так мучает перфекционизм - можно чужой код в либы собрать, оставив только интерфейс. Как вариант.
CrimsonPig
Цитата(Tronix286 @ Jun 26 2015, 22:54) *
Настает время, когда проще из различных кусков копи-пастой собрать готовый проект с минимумом правок - там закоментил, тут немного китайского кода. При этом осознаешь, что это полнейший говнокод, треш и угар, так писать ни в коем случае нельзя, и все надо переписать с нуля в идеале, но лень и вроде работает - не трож, а то перестанет. Cроки и вроде работает. Что это? Я один такой?


Это нормально! Кроме вас есть еще несколько миллионов говнокодящих индюков и китайцев sm.gif

Учебник:
http://ic.pics.livejournal.com/droids_life...427/427_600.jpg
ar__systems
Когда возникает искушение так сделать, я думаю о том, как стремно будет спустя год или два, когда потребуется что-то поменять, разбираться в этой лаже.
Ruslan1
Вокруг себя такого не видел.
Вычистить код очень помогает "мнение со стороны"- когда не занятый в проекте программист просматривает исходники и фиксирует все возникшие вопросы на сервере проекта как отдельные вопросы, требующие решения. Часто необходимо даже не сорцы править, а лишь документировать некоторые неявные для человека со стороны моменты.

И да, нормально написанный-документированный код читабелен и может быть повторно применен и через десять лет.
RabidRabbit
Цитата(Tronix286 @ Jun 27 2015, 01:54) *
Настает время, когда проще...

+1
jcxz
Цитата(CrimsonPig @ Jun 27 2015, 17:24) *
Это нормально! Кроме вас есть еще несколько миллионов говнокодящих индюков и китайцев sm.gif

+1
agregat
Цитата(Tronix286 @ Jun 27 2015, 00:54) *
Настает время... но лень и вроде работает - не трож, а то перестанет....Я один такой?

Нет не один, но опускаться до уровня индусов не следует по многим причинам.
AlexandrY
Цитата(agregat @ Jun 29 2015, 06:45) *
Нет не один, но опускаться до уровня индусов не следует по многим причинам.


А что за уровень у индусов и китайцев?
Все о нем говорят, но мне никогда не приходилось видеть.

Мне кажется самый угарный код у недавних студентов накачанных учебниками типа "Совершенный код" , " Искусство программирования на..." , "Паттерны проектирования" ...
А на самом деле Твой код никого не интересует biggrin.gif
CrimsonPig
Цитата(AlexandrY @ Jun 29 2015, 07:19) *
А что за уровень у индусов и китайцев?
Все о нем говорят, но мне никогда не приходилось видеть.


Вам приходилось когда-нибудь сталкиваться с супердешевыми китайскими товарами откровенно поганого качества? Типа, что продается в магазинах "все за N рублей" ?
Ну вот и код, создаваемый толпой дешевых говнокодеров, нанимаемых по рублю за пучок, примерно такой же sm.gif
Среди тех же индюков-китайцев существуют нормальные программисты, но они стоят сравнимо с нормальными западными.
Говноменеджементу же хочется нанимать толпу ресурсов и подешевле.

Те, кто сталкивался с методологией "наследование классов по-индусски", над паттернами программирования не смеется sm.gif
halfdoom
Цитата(Tronix286 @ Jun 27 2015, 00:54) *
проще из различных кусков копи-пастой собрать готовый проект с минимумом правок - там закоментил, тут немного китайского кода. При этом осознаешь, что это полнейший говнокод, треш и угар, так писать ни в коем случае нельзя, и все надо переписать с нуля в идеале, но лень и вроде работает - не трож, а то перестанет.


Это говорит о нежелании или неумении систематизировать свои (и чужие) разработки оформляя их в библиотеки. "Копи-паст" должен быть сведен к минимуму.
CrimsonPig
Цитата(halfdoom @ Jun 29 2015, 08:21) *
Это говорит о нежелании или неумении систематизировать свои (и чужие) разработки оформляя их в библиотеки. "Копи-паст" должен быть сведен к минимуму.


Слишком категоричное утверждение, ИМХО. В жизни всегда есть место копи-пасту sm.gif Заниматься созданием библиотек надо, если это оправдано..
Какой смысл заниматься разработкой библиотеки, если она нужна один раз и в одном проекте ? Стаскивать всякое барахло и организовывать его в библиотеку ? Есть вещи в жизни и по-интереснее.
Говнокоду тоже есть место в жизни, если надо накидать по-быстрому какой-нибудь опытный образец, например.

Вообще-то существуют методики оценки качества кода, включая оценки процента копипаста внутри проектов sm.gif Некоторая поблема заключается в том, что многие методики неприменимы или очень сложно применимы к разным видам софта (типа эмбеддед) или их применение неоправданно дорого, да и вообще процесс разработки софта, похоже, не формализуем.
AlexandrY
Цитата(CrimsonPig @ Jun 29 2015, 10:43) *
Стаскивать всякое барахло и организовывать его в библиотеку ?


Да о каком барахле вы говорите, покажите это барахло.

А то как-то логика хромает: ума значит понять, что это барахло хватает, а самому написать барахло ума не хватает?
Ruslan1
тут в борьбе главное приоритеты расставить и сроки расписать.
Попробуйте составить план хотелок ну хотя бы по текущему проекту, со сроком исполнения и аргументацией "зачем оно надо". А потом расставьте приоритеты. А потом покажите это человеку, который за это платит (начальнику, если в рабочее время хотите сделать; или жене, если трудовой подвиг будет совершаться в дополнительное время). И список очень быстро уменьшится до приемлемого и действительно полезного.
Это вообще всего касается, не только программирования sm.gif
CrimsonPig
Кстати, про говнокодеров и не очень:

http://geektimes.ru/post/252690/

Опять же, советую обратить внимание на случай с Арианом.. Вопросы "а как мне преобразовать float в int а потом обратно" до сих пор мучают неокрепшие умы кгхм..кодеров судя по данному форуму и дгугим, типа сахары. . sm.gif
Окрепшие умы таких же кодеров, небось, смело и прямо проверяют даблы на равенство путем "==" sm.gif

skripach
Цитата(CrimsonPig @ Jun 29 2015, 15:11) *
Окрепшие умы таких же кодеров, небось, смело и прямо проверяют даблы на равенство путем "==" sm.gif

Мой разум ещё не окреп crying.gif , просветите насчет даблов.
CrimsonPig
Цитата(skripach @ Jun 29 2015, 14:56) *
Мой разум ещё не окреп crying.gif , просветите насчет даблов.


Пожалуйста:
http://stackoverflow.com/questions/1897153...orking-properly
AlexandrY
Цитата(CrimsonPig @ Jun 29 2015, 17:02) *


Это не в тему.
Мужики просто не знают свое железо.
CrimsonPig
Цитата(AlexandrY @ Jun 29 2015, 15:15) *
Это не в тему.
Мужики просто не знают свое железо.


Ммм.. что-то я начал терять нить... ну ладно, вот пример про сравнение даблов
volatile здесь шоб никто не догадался sm.gif

volatile double d1 = 1.0/3.0;
volatile double d2 = 7.0/3.0;
d2 /= 7.0;
assert(d1 == d2);
AlexandrY
Цитата(CrimsonPig @ Jun 29 2015, 15:11) *
Кстати, про говнокодеров и не очень:

http://geektimes.ru/post/252690/

Опять же, советую обратить внимание на случай с Арианом.. Вопросы "а как мне преобразовать float в int а потом обратно" до сих пор мучают неокрепшие умы кгхм..кодеров судя по данному форуму и дгугим, типа сахары. . sm.gif
Окрепшие умы таких же кодеров, небось, смело и прямо проверяют даблы на равенство путем "==" sm.gif


Только при чем тут код? Или кодом называете сниппеты на пару строк?

Ошибки в распределенных и RT системах управления это классика.
На этот счет появляются даже теоремы типа теоремы CAP


Цитата(CrimsonPig @ Jun 29 2015, 17:22) *
Ммм.. что-то я начал терять нить... ну ладно, вот пример про сравнение даблов
volatile здесь шоб никто не догадался sm.gif

volatile double d1 = 1.0/3.0;
volatile double d2 = 7.0/3.0;
d2 /= 7.0;
assert(d1 == d2);


Это совершенно некорректный пример
Правильный пример вот:
Код
   volatile double d1 = 20000.0;
   volatile double d2 = 1.0;
   volatile double k1 = 60000.0;
   volatile double k2 = 3.0;
  
   d1 = d1/k1;
   d2 = d2/k2;

   if (d1==d2)
   {
      printf("d1(%f)==d2(%f)",d1,d2);
   }
   else
   {
      printf("d1(%f)<>d2(%f)",d1,d2);
   }


И знаете, d1 и d2 будут равны друг другу.
Изучайте железо.
SSerge
Цитата(AlexandrY @ Jun 29 2015, 21:51) *
И знаете, d1 и d2 будут равны друг другу.
Изучайте железо.

А вот sqrt(2.0) и 2.0/sqrt(2.0) уже не равны.
ar__systems
Цитата(AlexandrY @ Jun 29 2015, 09:51) *
И знаете, d1 и d2 будут равны друг другу.
Изучайте железо.


А при чем тут "изучайте железо"? То, что в вашем примере будет д1==д2 не отменяет того факта, что в общем случае сравнивать числа с плавающей точкой на равенство - безграмотно. И это безотносительно железа.
halfdoom
Цитата(CrimsonPig @ Jun 29 2015, 10:43) *
Какой смысл заниматься разработкой библиотеки, если она нужна один раз и в одном проекте ?

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

Цитата(AlexandrY @ Jun 29 2015, 09:19) *
А что за уровень у индусов и китайцев?
Все о нем говорят, но мне никогда не приходилось видеть.

Чаще всего имеется в виду механическая реализация требуемого алгоритма, без какого либо процесса формализации и попыток нормализации. Принцип прост - должно работать здесь и сейчас. Практически нет выделения в функции повторяющихся фрагментов и т.д. и т.п. Говорю это по факту знакомства с NDA библиотекой от весьма известной фирмы. При этом не могу утверждать, что это уровень "индусов и китайцев", поскольку в копирайтах конкретного автора нет, однако объем писанины впечатляет.
jcxz
Предлагаю переименовать данный топик на более подходящее: "Быдлокодить или не быдлокодить? - вот в чём вопрос!" sm.gif

Цитата(halfdoom @ Jun 30 2015, 10:56) *
При этом не могу утверждать, что это уровень "индусов и китайцев", поскольку в копирайтах конкретного автора нет, однако объем писанины впечатляет.

"Индусский код" - это не национальная характеристика, это уровень профессионализма (т.е. - его отсутствие). Раньше это называли "халтура".
Индусский код может писать и коллега за соседним столом вполне славянской внешности.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.