Comments 33
Пример на python уж очень натянуто выглядит, если сравнивать с другими.
Да без проблем.
Лет 10 назад, на собеседовании, одного разработчика попросили написать простейший пример как выбрать элемент на странице по его id. Интервьюемый спросил можно ли использовать jQuery. Ему разрешили. И тогда он наваял это:
var id = 'id-of-element';
var element = null;
$('*').each(function(index, el) {
if ($(el).id() == id) element = el;
});
console.log(element);
www.govnokod.ru/212
Я — учитель в универе. У меня таких приколов каждый семестр хоть отбавляй. Но им, более менее, простительно. Вот из последних, который запомнился:
function isArray(arr) {
if (Array.isArray(arr)) {
return true
} else {
return false
}
}
Эталонный индусокод моей юности:
if((a>b).toString().length()==4)
А так в школьных учебниках написано, ибо автору нужно показаь школьникам пример с if, а реальных примеров они придумать не могут
Студенческий код — это для особых ценителей, да.
(если что, смысла в этом коде и не должно быть много, тут ассемблер разбирался; претензии к эстетике скорее )
Но ладно, тут люди просто еще не понимают, что тут такого — работает же! Какие еще отступы :)
Ну, если тут начали вспоминать всякие мелочи — то вариации вот этого кода я видел многократно:
for (int i=0; i<N; i++) {
if (array[i] == foo) {
write('Элемент найден');
} else {
write('Элемент не найден');
}
}
Или вы имеете в виду, что надо было использовать встроенную функцию для этого? Ну, да, но не везде она есть, а где есть реализована скорее всего примерно также.
Один из таких примеров я даже на говнокод постил.
$opl1_type_arr = array("no","yes");
for($i=0;$i<2;$i++){
$str_pr = $opl1_type_arr[$i];
echo "<option value=\"$str_pr\"";
if($RowOP['pay_peredano']==$str_pr) echo " selected";
switch ($str_pr) {
case 'yes':
echo ">Да</option>";
break;
case 'no':
echo ">Нет</option>";
break;
}
}
Пример, когда функция возвращает одно и то же в любом случае… Доводилось мне писать такое. Бывают случаи, когда документы друг другу не соответствуют, пишешь по одному, потом находишь нестыковку, спрашиваешь у одного ответственного, он говорит одно, у другого — другое. В итоге получаешь кучу строк закомментированного кода и функцию, как в статье — три дня назад она делала что-то полезное, и вызывалась в нескольких местах, сейчас же стала не нужна. А еще через три дня вернется третье ответственное лицо, и потребует вернуть, как было, так что просто выпилить этот мусор из кода тоже не вариант. Так что я не стал бы называть этого программера тупым на основе одного этого примера
int n = 100;
for (int i = 0; i < n; n++)
{
// do something
}
Комментарий: «почему-то этот цикл жутко тормозит»
Про банальщину вроде функций вида
if(condition) return true;
else return false;
даже говорить влом…Но вот такие перлы реально убивают до сих пор:
let chain = Promise.resolve();
chain
.then(() => {
doSomething1();
})
.then(() => {
doSomething2();
})
.then(() => {
doSomething3();
});
В первый месяц у меня еще была возможность спросить «зачем?». На что я получил закономерный ответ: «ну чтоб дожидалось запросов в тех функциях». А на мое объяснение, что если не вернуть из колбэка промис, то ждать не будет, а у него ни колбэк, ни вызываемые функции ничего не возвращают, я услышал лишь «разве?».Надеюсь он больше не будет так делать… Но человек реально верил в «магию» промисов в js и даже не догадывался, что это работает несколько иначе, чем он хотел.
А вот еще одинт финт, я нашел уже когда обратная связь оборвалась:
<div v-for="(item, i) of array" v-if="i === index">
...
</div>
Если кто не знает, это такой способ написать цикл for и if в шаблонах vue. И я бы мог списать это на то, что человек не понимает шаблонов и пишет как умеет… Но я увидел абсолютно аналогичную штуку в js коде:let item;
for(let i = 0; i < array.length; i++) {
if(i === index) {
item = array[i];
}
}
Я так и не понял сокрального смысла сия кода, и почему нельзя было просто написать const item = array[index];
Остается только предполагать, что у человека не было дома отопления, и он грелся таким образом от проца.
Сталкивался с кодом уровн:
try {
data = parseAsFirstDataType(someFile)
} catch() {
data = parseAsSecondDataType(someFile)
}
Те считалось, что если не удалось распарсить файл первым типом, то второй тип парса обязательно спасет. (Наткнулся на код, когда не мог понять почему приложение падает, а исключения нет)
pointer := nil;
pointer.Free;
if (условие) {
$row[0]['<option1>'] = $row[0]['<option1>'];
$row[0]['<option2>'] = $row[0]['<option2>'];
} else { ... }
Я не ошибся, обе стороны выражения равны! Может в Php это имеет какой-то смысл?
Думаю, «ну задумали что-то, ну забыли исправить, бывает». Исправляю, читаю код дальше. Ан нет, такое сплошь и рядом.
Ещё часто вижу что-то типа:
if ($_REQUEST['userType'] == '<somevalue>') {
$var = $_REQUEST['userType'];
} else {
$var = $_REQUEST['userType'];
Что мешало в одну строку написать? Ребята видимо в количествах строк кода получают зарплату. Любой мало-мальски адекватный IDE покажет предупреждения.
А уж бесконечные цепочки из if else даже упоминать не буду. Switch case видимо в Индии запрещён.
Абсурдный код или «как не стоит писать»