реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как писать неподдерживаемый код?
juvf
сообщение Sep 12 2016, 08:47
Сообщение #1


Профессионал
*****

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



пролистовал учебник... или "учебник" по жаваскрипт.... наткнулся на такую статью

Предлогается писать подобный индусский код
Код
// код из jQuery
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;


Это шутка какая-то, или реально сейчас учат так писать???

Go to the top of the page
 
+Quote Post
quarter
сообщение Sep 12 2016, 10:50
Сообщение #2


Участник
*

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



классический vendor lock-in.
на что только не пойдёт программист, лишь бы его Центропупие не отпихнули от кормушки.
Go to the top of the page
 
+Quote Post
x893
сообщение Sep 12 2016, 11:23
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Профи пишут ещё понятнее

i=i?i<0?Math.max(0,len+i):i:0;j=j?j<0?Math.max(0,len+j):j:0;...

и весь код в одну строку
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 12 2016, 11:34
Сообщение #4


фанат дивана
******

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



Цитата(juvf @ Sep 12 2016, 13:47) *
Это шутка какая-то, или реально сейчас учат так писать???

Это называется "сарказм". Статья пишет, что надо писать так, но подразумевает, что так писать не надо.

Кстати, в jQuery код очень аккуратный и понятный, вот, посмотрите.
Просто его упаковывают, чтобы уменьшить объём.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Lerk
сообщение Sep 12 2016, 11:36
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 339
Регистрация: 5-05-11
Пользователь №: 64 797



Цитата(juvf @ Sep 12 2016, 11:47) *
Это шутка какая-то, или реально сейчас учат так писать???


А название статьи не смутило? Содержание строго соответствует названию, на учебник уважаемого издательства не особо похоже.

PS. Кто вручную разбирал знаменитый однострочник на перле, такие фокусы читает без запинки wink.gif

Цитата
perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 12 2016, 12:05
Сообщение #6


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Это же "Вредные советы" для программиста. Заодно проверка чувства юмора.
Go to the top of the page
 
+Quote Post
Slash
сообщение Sep 12 2016, 13:18
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011



Для С++ есть Clang Format. http://format.krzaq.cc/ тут можно поиграть онлайн.
Но если переменные называть i, j, k, l, m - тут ничего не поможет. В смысле, все нормально, рабочее место за вами.

Сообщение отредактировал Slash - Sep 12 2016, 13:21
Go to the top of the page
 
+Quote Post
juvf
сообщение Sep 12 2016, 17:57
Сообщение #8


Профессионал
*****

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



Цитата(Slash @ Sep 12 2016, 18:18) *
Но если переменные называть i, j, k, l, m - тут ничего не поможет. В смысле, все нормально, рабочее место за вами.

Если переменные называть i, j, k, l, m и/или следовать советам статьи, то рано или позно сам себе ногу отстрелишь.... с последующим увольнением.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 13 2016, 05:17
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(juvf @ Sep 12 2016, 23:57) *
Если переменные называть i, j, k, l, m и/или следовать советам статьи, то рано или позно сам себе ногу отстрелишь.... с последующим увольнением.

И что? Я все локальные переменные внутри функций так называю. И когда просматриваю функцию - сразу понимаю, что это локальная переменная не заглядывая в заголовок.
За >15лет работы ногу не отстрелил.
Зато есть у нас один программист-коллега, так он переменные называет именами длиной по несколько десятков символов, почти в сотню - вот тут действительно отстрелишь пока такое прочитаешь.
Go to the top of the page
 
+Quote Post
juvf
сообщение Sep 13 2016, 05:54
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 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 лет и ногу не отстрелили.... но это не значит что другие не отстрелят.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 13 2016, 06:25
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 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 - по обстоятельствам.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01448 секунд с 7
ELECTRONIX ©2004-2016