Posts Tagged ‘качество’
За что я люблю Опенсорс
Внимание: Это нестабильная версия, она содержит последние изменения, но также может содержать некоторые проблемы, такие как падения и потеря информации. На самом деле, она может вообще не работать.
Как перестать быть говнокодером
Мальчишки и девчонки, а также их родители, кодеры, программисты, разработчики и (да-да!) преподаватели (ака ИТ тренеры).
Когда вы пишите код, (а тем более, учите этому), то его надо писать не так, «чтобы щас работало и ладно», а так, чтобы он работал быстро, эффективно, был легко читаемым, понятным, легко изменяемым и дополняемым. Для этого надо, как минимум, понимать, как работает тот кусок кода, который вы пишите.
Иначе получится как у одного «опытного» программиста, который много лет писал 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";
И опять о юзабилити
В последнее время со всех сторон поступает очень много негативной о службе “Почты России”. В основном, это связано с отвратительной доставкой товаров купленных в заграничных магазинах. Евгений с сайта Design For Masters зашёл на сайт этой замечательной службы и… вобщем, читайте “Юзабилити сайта Почты России”.
Несколько цитат:
Жму на ссылку и… Ошибка 404. Страница не найдена. Жму вторую… 404.
Главная страница Почты России радует морем полезной информации:
атмосферное давление и температура в Москве и Санкт-Петербурге, курс доллара и евро, индекс ММВБ, индекс РТС и отраслевые индексы РТС, ссылки на Аэрофлот, РЖД, Внешэкономбанк, Мин связи, различные почтовые союзы, как раз то, что нужно людям на почтовом сайте.