Игорь Борисов

Специалист: консультации, аудит, курсы, семинары, тренинги

Как перестать быть говнокодером

23 комментария

Мальчишки и девчонки, а также их родители, кодеры, программисты, разработчики и (да-да!) преподаватели (ака ИТ тренеры).

Когда вы пишите код, (а тем более, учите этому), то его надо писать не так, «чтобы щас работало и ладно», а так, чтобы он работал быстро, эффективно, был легко читаемым, понятным, легко изменяемым и дополняемым. Для этого надо, как минимум, понимать, как работает тот кусок кода, который вы пишите.

Иначе получится как у одного «опытного» программиста, который много лет писал for ( $i=0; $i < strlen ( $string ); $i++ ), а потом вдруг(!) узнал, что так писать не надо. То есть, человек однажды скопировал у кого-то этот кусок кода и бездумно везде использовал.

Если вы 10 лет пишите echo ’Hello world’ и ничего более, то это не значит, что вы супер-пупер-мега программист. Вы просто Вася Пупкин с 10-летним стажем написания этого самого хело ворлд.

И не надо думать, что это относится только к тем, кто пишет на «каких-нибудь скриптах». Вот пост ЖЖ-юзера cd-riper по этому поводу, который я почти целиком процитирую:

Классический пример, когда человек наивно полагает, что пишет на C++, а сам лишь на полшага ушел от старого доброго C


class cStateManager
{
  public:
    cStateManager();
    ~cStateManager();
    bool Push( void (*Function)(void* CallerPtr, Purpose Purp), void* CallerPtr = NULL);
    bool Pop( void* CallerPtr = NULL);
    bool PopAll( void* CallerPtr = NULL);
    bool Process( void* CallerPtr = NULL);
  private:
    sState* m_CurrentState;
};

Обратите внимание на то, что передается в метод Push. Почему регистрируется не метод класса? Почему тип передаваемого параметра void*? Как будет выглядеть код реализации такого колбэка?

Когда в C++ человек ломает типизацию, и решает все проблемы через void*, ему надо вырывать руки. И яйца, чтобы не плодил таких же гениев.
Уверен, в коде этого "гуру", который пытается чему-то учить других, вы найдете вызовы любимой функции сишников printf. И горы ручного вызова delete.

По-моему, для gamedev это просто классика — сишник, думающий, что пишет на плюсах.

зы. Про использование NULL я вообще молчу…
Обычно рядом легко находятся перлы типа
T *p = new T();
if (!p) …;
или
if (p) delete p;

Вывод из вышенаписанного: обязательно посещайте замечательный сайт govnokod.ru и смотрите, нет ли в их коллекции кода, который напоминает ваш.

И напоследок, ещё один шедевр от гуру с хрен-знает-сколько-летним опытом. Это типа тело функции на PHP:


$res =  my_query("SELECT * FROM catalog");
echo "<h1>Каталог товаров</h1>";
echo "<table border='1'><tr>";
$row = mysql_fetch_assoc($res);
foreach ($row as $key => $val) echo "<th>$key</th>";	
echo "</tr>";
		
mysql_data_seek($res, 0);
while ($row = mysql_fetch_assoc($res)) {
	echo "<tr>";
	foreach ($row as $key => $val) echo "<td>$val</td>";	
	echo "</tr>";
};
echo "</table>n";
Реклама

Written by Игорь Борисов

31.08.2010 в 12:02

комментария 23

Subscribe to comments with RSS.

  1. Есть мнение, что ричард штульман тебе руки теперь не подаст.

    Ruslan

    31.08.2010 at 12:56

  2. Когда писАл, этого и опасался.

    Игорь

    31.08.2010 at 12:58

  3. «for ( $i=0; $i < strlen ( $string ); $i++ )" а почему так нельзя?

    Николай

    13.02.2012 at 00:18

    • потому что есть муоьтибайтовый strlen

      больше умиляет соппсная библа, судя по всему повторяющая синтаксис и семантику встроенных ДБ-функций. А также… ну, по хорошему мух от котлет надо отделять, ну да хрен с ним… но неуужели нельзя было вывод собрать в переменную и вывести его всего один раз? Алсо нафига селект стар если юзаются только два поля в итоге. Фейспалм=)

      Денис

      01.03.2012 at 04:53

    • Николай, нельзя потому, что при каждой итерации цикла будет вычисляться strlen строки. Надо сначала, перед циклом вычислить длину, записать в переменную, а переменную передавать в цикл.

      morgot

      10.03.2012 at 22:56

  4. Игорь, это правда? Цитата с «Лурка»:

    Пых может поломать жизнь не хуже любой дури, поэтому слушай, мой юный друг. Да, Пых — самый короткий и быстрый путь к баблу. Но если ты решил связать свою жизнь с программированием, то совет один: даже и не думай о Пыхе, иначе через пару лет будешь рвать волосы на жопе.
    PHP (вместе с Pascal) — самые низкооплачиваемые языки программирования. Сколько бы книг ты ни прочитал, сколько бы мегабайт кода ни написал, ты никогда не будешь получать больше, чем Java-быдлокодер средней криворукости. «На Яве пишут Корпорации», а на Пыхе…
    Порог выхода такой же низкий, как и порог входа: если у программиста на полноценных языках с возрастом есть шанс стать ценным высокооплачиваемым специалистом, то у похапе-олдфага такой возможности нет просто ввиду убогости и примитивности решаемых задач, его спокойно можно выгнать на улицу взяв взамен школьника, который обучится всем премудростям похапе-быдлокоддинга за пару месяцев потребляя при этом в три раза меньше доширака.
    Возможно, сейчас тебе кажется, что делать сайты — достойное и интересное занятие, но если ты хоть немного программист, через пару лет такой работы ты просто завоешь от того, насколько это унылая и далекая от программирования деятельность.
    Большинство проектов кроме того, что по сути своей убоги, представляют из себя чудовищный говнокод на кривых самодельных говнофреймворках и говноCMS (потому как сам язык не только не заставляет писать правильно, но и фактически подталкивает к производству быдловелосипедов). Как следствие такой работы — необратимое поражение мозга и окончательная потеря квалификации. Чему также способствует работа в коллективе невероятно тупых похапешников, постоянные оскорбления и обвинения (просто потому, что умный человек PHP не выберет).
    Некоторые начинают работать на PHP с надеждой потом перейти на что нибудь другое. Но это тоже большая ошибка: во-первых, теряется драгоценное время для старта (наверное, самое важное и ценное в и без того короткой профессиональной жизни программиста), а во-вторых, PHP-опыт никому не нужен и нормальные программисты справедливо смотрят на него как на говно. «PHP» — клеймо быдлокодера на лбу и крест на карьере профессионального программиста, если ты пошёл по этому пути, назад дороги уже не будет. Единственное исключение — устроится похапешником на многопрофильную фирму, где тебя каким-то чудом заметят и предложат перейти на полноценную технологию, но это невероятная удача.
    Чуть более, чем вся относительно хорошо оплачиваемая работа для похапешников состоит из поддержки ботнетов, порносайтов, говносайтов с вирусами и прочего подобного дерьма. Подумай, хочешь ли ты потратить свою жизнь на засирание интернетов.
    PHP погубил очень много потенциально хороших программистов просто благодаря легкости изучения на начальных этапах. Он затягивает как наркотик, с ним очень легко и приятно начать, вот только когда приходит понимание принципиальных недостатков как самого языка, как и (что гораздо более важно) его убогой ниши — часто оказывается уже слишком поздно что-то менять. Так что учись программировать, думай о будущем и обходи PHP стороной. Потому что с PHP у тебя нет будущего — это путь в никуда.
    Ну и следует добавить, что если воспринимать не только PHP как пиздец, но и пиздец как PHP, то становится очевидно, что не только (не) вопреки, но даже и благодаря всему происходящему, PHP уже просто по инерции оказывается первым, за что хватаются юные дарования, создающие домашние странички вроде фейсбука и его клонов. «Раз все пишут, то и я напишу». Ибо стопицот миллионов леммингов не могут оши… throw new Exception();

    • Вот вы все тут крутые перцы-программеры, пишите мегасуперпупер код и срете на технологии (потому как пых, это не только (извините, закройте глаза — я вынужден это написать) язык программирования), а часть комплекса для написания интернет-проектов. Я везде читаю, что та же Joomla (сам не люблю), WordPress, Drupal — есть говнокод и писано говнокодерами. Но, кроме откровенной трепни от вас, гуру тру кодинга, больше ничего нет! Покажите мне хоть одну CMS не говнокод? Ах да, это принципиально не возможно, потому как Пых — это уже генератор говнокода. Покажите мне хоть что-нибудь в WEB созданное великим профессионалом на Си, к примеру? То что востребовано! То, что работает! Так на Си такое писать расточительно, неправильно, нелогично и т.д. — не так-ли? Для этого и создан Пых — это вам не приходило в голову? На яве писать также нецелесообразно, потому она уже давно не используется (как это было на заре сайтостроения, что бесило, капец! Люди просто уходили с сайтов написанных на Яве). Кстати … мне интересно, а этот сайт на Си++ написан? Или может на Java? Ща поглядим … Ухты сколько javascript`a … ааа … так это еще и WordPress — так он же на Пыхе написан!!! 🙂 Что такое? На более серьезный движок мозга не хватает? Ах да … времени не хочется убивать на это говно … да-да … лучше его на обсёр потрачу, не так-ли? Так вот, господа п..дуны (извините, по другому не могу сказать, потому как не по чем судить) откройте глаза и поймите своим мегамозгом, что ненавистный вами пых, мускул (да-да .. это кастрированная недобаза), javascript и т.д. все это создано для УЗКОГО направления и прекрасно решает свои задачи. Есть такая марка авто — Рено, называется. Спросите у любого что такое Рено. Рено — это гавно. Так вот, парни, так говорят те, у кого никогда не было Рено! Отвечаю! В моем Шафране (Рено) ярые мерседесники кончали и слюной захлебывались со словами: да ладно! Это не может быть Рено. Так вот, ИМНО на Пых и иже с ним гонят такие же крутые перцы, которые НИКОГДА ничего толкового так и не смогли на нем сделать! Имейте уважение к людям, уроды! А уроды Вы, потому что меня и целый пласт людей которые хоть что-то делают и результатом их работы пользуетесь вы, вы назваете Говнокодером. Если Вы такие умные — покажите в каком направлении надо двигаться? Назовите язык на котором надо писать те же сайты и интернет проекты (интернет-магазины, порталы, банковские онлайн-проекты)? Или это все не нужно? Удачи, и мне похеру что вы обо мне думаете. Я занимаюсь любимым делом. Моя работа востребована и я получаю за нее бабки, чего и вам желаю. Имейте уважение к другим. «умный человек не выберет PHP» говоришь … Умный человек не будет обсирать то, о чем знает поверхностно или то, что ему не нравится. Каждому свое …

      Игорь

      13.09.2013 at 09:54

      • PS
        Ухты … даже письмо с подтверждением не хватило ума перевести на русский :))) Я уже не говорю о дизайне самого проекта … Учителя, блин ….

        Игорь

        13.09.2013 at 10:01

      • Насколько я понял, это было не мнение написавшего, а цитата с Лурка. Не надо так бурно реагировать, вы же не принимаете всерьёз то, что говорит Задорнов.

    • 1. У каждой технологии есть свои плюсы и минусы, идеала не бывает.
      2. Каждый инструмент создан для решения конкретных проблем: молоток — для забивания гвоздей, отвёртка — для закручивания шурупов, микроскоп — для наблюдением за бактериями.
      3. Если вам неудобно забивать гвозди микроскопом, то вы выбрали неправильный инструмент.
      4. Если вы поклонник рыбалки, то вряд ли вам стоит рассматривать в качестве подходящего автомобиля для поездок болид Формулы 1 или Мини Купер — лучше посмотреть в сторону Джипа. Однако, если вы всё-таки выбрали болид, то не стоит жаловаться на его недостатки, он создан для решения других проблем.
      5. Что касается PHP, то его ЗНАЮТ единицы от общего числа людей его использующего. Это, впрочем, касается и других популярных технологий.

  5. А я выбрал путь ПХП. Во первых сыграло то, что курсы по другим языкам программирования не преподавали. И я пошел учить ПХП.

    Во-вторых. Курсов конечно было недостаточно. И пошел искать инфу в инете. И мне попались курсы Борисова. Он то и определил мой выбор. Я только начинаю, на стажировке в данный момент. Но Игорь Олегович, вы мой первый настоящий учитель. Спасибо!!! Если буду в Москве (когда буду в Москве. Надеюсь дальнейшая моя зарплата позволить путешествовать без проблем :)) хотелось бы вас увидеть, взять автограф и т.п. :))

    Alma

    12.10.2013 at 19:08

  6. может быть strlen($string) и быдлокод (я лично, считаю перед циклом длину), но на codecademy.com больше, чем все, уроки и задания это используют, именно в счетчиках циклов. А там, насколько я понимаю, команда из MIT почти все поголовно.

    Vlad

    04.02.2014 at 20:37

    • «Миллион леммингов не могут ошибаться». Кстати, в случае с strlen — это те так критично, функция не считает, а возвращает длину строки. Однако, какой смысл без толку много раз дёргать функцию? Да и даже в таких мелочах не надо приучаться к плохому, привычка — вторая натура.

    • здесь смысл сказанного в другом: если использовать приведенный пример, то длина строки будет подсчитываться при каждой итерации for. Правильно будет один раз посчитать длину в переменной и уже ее использовать в условии цикла.

      Игорь

      05.02.2014 at 12:09

  7. а что собственно с функцией не то? data_seek???

    Илья

    07.10.2014 at 12:12

  8. шаблонизатор? я правильно понял?

    Илья

    08.10.2014 at 09:25

  9. Игорь! Вы отличный преподаватель. И php и javascript отличные, мощные языки, которые позволяют реализовать любые проекты соответствующие тренду текущего времени. Стоит отметить, что сами по себе языки программирования не остаются на том же уровне, все меняется, языки дополняются различными полезными плюшками. С вашими лекциями я научился отделять мух от котлет и для меня с первого взгляда очевиден факт неразумного решения вставить strlen в цикле for.
    Очень часто быдлокодеры по незнанию создают куча мусора, выводят по 30 однотипных функций, раскидают все по разным фаилам, выводят целый список базы данных там, где он абсолютно не нужен. А потом удивляются «а че это php так медленно работает». А руки потому что кривые, если правильно написать скрипт он будет не хуже другого языка программирования.
    Нет быстрых или медленных языков, есть хорошие или плохие специалисты.

    Жан

    03.02.2015 at 02:41


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: