|
|
  |
Как писать неподдерживаемый код? |
|
|
|
Sep 12 2016, 08:47
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
пролистовал учебник... или "учебник" по жаваскрипт.... наткнулся на такую статьюПредлогается писать подобный индусский код Код // код из jQuery i = i ? i < 0 ? Math.max(0, len + i) : i : 0; Это шутка какая-то, или реально сейчас учат так писать???
|
|
|
|
|
Sep 12 2016, 10:50
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 17-12-15
Пользователь №: 89 731

|
классический vendor lock-in. на что только не пойдёт программист, лишь бы его Центропупие не отпихнули от кормушки.
|
|
|
|
|
Sep 12 2016, 11:34
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(juvf @ Sep 12 2016, 13:47)  Это шутка какая-то, или реально сейчас учат так писать??? Это называется "сарказм". Статья пишет, что надо писать так, но подразумевает, что так писать не надо. Кстати, в jQuery код очень аккуратный и понятный, вот, посмотрите. Просто его упаковывают, чтобы уменьшить объём.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 12 2016, 11:36
|
Местный
  
Группа: Свой
Сообщений: 339
Регистрация: 5-05-11
Пользователь №: 64 797

|
Цитата(juvf @ Sep 12 2016, 11:47)  Это шутка какая-то, или реально сейчас учат так писать??? А название статьи не смутило? Содержание строго соответствует названию, на учебник уважаемого издательства не особо похоже. PS. Кто вручную разбирал знаменитый однострочник на перле, такие фокусы читает без запинки  Цитата perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
|
|
|
|
|
Sep 12 2016, 13:18
|
Местный
  
Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011

|
Для С++ есть Clang Format. http://format.krzaq.cc/ тут можно поиграть онлайн. Но если переменные называть i, j, k, l, m - тут ничего не поможет. В смысле, все нормально, рабочее место за вами.
Сообщение отредактировал Slash - Sep 12 2016, 13:21
|
|
|
|
|
Sep 12 2016, 17:57
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Цитата(Slash @ Sep 12 2016, 18:18)  Но если переменные называть i, j, k, l, m - тут ничего не поможет. В смысле, все нормально, рабочее место за вами. Если переменные называть i, j, k, l, m и/или следовать советам статьи, то рано или позно сам себе ногу отстрелишь.... с последующим увольнением.
|
|
|
|
|
Sep 13 2016, 05:17
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(juvf @ Sep 12 2016, 23:57)  Если переменные называть i, j, k, l, m и/или следовать советам статьи, то рано или позно сам себе ногу отстрелишь.... с последующим увольнением. И что? Я все локальные переменные внутри функций так называю. И когда просматриваю функцию - сразу понимаю, что это локальная переменная не заглядывая в заголовок. За >15лет работы ногу не отстрелил. Зато есть у нас один программист-коллега, так он переменные называет именами длиной по несколько десятков символов, почти в сотню - вот тут действительно отстрелишь пока такое прочитаешь.
|
|
|
|
|
Sep 13 2016, 05:54
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Цитата(jcxz @ Sep 13 2016, 10:17)  И что? Я все локальные переменные внутри функций так называю. И когда просматриваю функцию - сразу понимаю, что это локальная переменная не заглядывая в заголовок. За >15лет работы ногу не отстрелил. Про однобуквенные переменные было сказано в контексте статьи. в статье предлагается использовать однобуквенные переменные не для циклов, и не внутри коротких функций. Назовите переменные например class ComPort { int d,i,e; std::strung j,q; }; А ещё лучше этот же компорт class Uu { int d,i,e; std::strung j,q; }; Цитата И когда просматриваю функцию - сразу понимаю, что это локальная переменная не заглядывая в заголовок. 1) Ну так-то глобальные переменные - зло. внутри функции все переменные должны быть локальными. Конечно есть люди, кто всё пишет с глобальными переменными и код годный.... но это не есть тру. 2)А как вы потом понимаете, что это за переменная? есть устоявшиеся правила что i, j, k, n - счетчики в циклах, это понятно. Но вот вам надо переменные локальные сделать, кол-во красных машин, кол-во белых машин, а также кол-во красных и белых фонарей. Вы назовёте их q,w,e,r. Да ещё и в аргументах функции они будут bool funk(int q, int w, int e, int r); ))))) как в статье говориться - даже простейшее изменение займет годы оплачиваемого труда Конечно найдется человек, который скажет: "Я с таким кодом за 15 лет ногу не отстрелил". Найдутся люди, которые в кобуре проносили заряженный пистолет 15 лет и ногу не отстрелили.... но это не значит что другие не отстрелят.
|
|
|
|
|
Sep 13 2016, 06:25
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(juvf @ Sep 13 2016, 11:54)  например class ComPort ... Это конечно не комильфо. Цитата(juvf @ Sep 13 2016, 11:54)  2)А как вы потом понимаете, что это за переменная? есть устоявшиеся правила что i, j, k, n - счетчики в циклах, это понятно. Но вот вам надо переменные локальные сделать, кол-во красных машин, кол-во белых машин, а также кол-во красных и белых фонарей. Вы назовёте их q,w,e,r. Да ещё и в аргументах функции они будут bool funk(int q, int w, int e, int r); ))))) как в статье говориться - даже простейшее изменение займет годы оплачиваемого труда Нет, конечно так (однобуквенно или буква цифра i0, i1,...) я называю только временные переменные внутри функций, всякие счётчики циклов как вы указали и т.п. Есть у меня устоявшиеся правила: i<цифра> или j<цифра> или с<цифра> - int или unsigned, q<цифра> - 64-битное значение, a<цифра>, x<цифра> - float или double, n<цифра> - какое-нить количество, p<цифра> - указатель (общий случай), s<цифра> - указатель на char и т.п. И если надо внутри функции чтобы были например переменные типа int и типа unsigned int, то это будет: int i, i0, i1, ...; uint j, j0, j1, ...; чтобы дальше по коду сразу было ясно - где знаковая, а где беззнаковая операция. Аргументы функций все многобуквенные. И это не жёсткое правило, если нужно N красных машин и N синих машин, может быть будет nr и nb, а может nRed и nBlue - по обстоятельствам.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|