Опираясь на короткое замыкание оценки, вместо того, чтобы использовать, если контролировать структуру


Примеры, где я начал переход на сокращенные вычисления:

В PHP

$id=0;//initialized in case of no result
$r=mysql_query(SQL);
if($r && mysql_num_rows($r)>0){
  list($id)=mysql_fetch_row($r);
}

становится

$id=0;
$r=mysql_query(SQL);
$r && mysql_num_rows($r)>0 && list($id)=mysql_fetch_row($r);

В JavaScript

var Req=jQuery.ajax(OBJECT);
//Something has happened and now i want to abort if possible
if(Req && Req.abort){
  Req.abort();
}

становится

var Req=jQuery.ajax(OBJECT);
//Something has happened and now i want to abort if possible
Req && Req.abort && Req.abort();

Я знакома с коротким , если стиль

if(Req && Req.abort) Req.abort();

но, кажется, сложнее, чем короткого замыкания оценки.



545
6
задан 11 ноября 2011 в 11:11 Источник Поделиться
Комментарии
1 ответ

Это злоупотребление короткого замыкания оценки. Это не сразу очевидно, что умысел. Конечно, я могу в конце концов увидеть, что вы получаете идентификатор, назвав Треб.метод abort(), что. Но я не должен расшифровать строку кода сначала выяснить, что он делает.
Лаконичность никогда не превосходит читаемость исходного кода. (Конечно, сокращение/упаковка JS имеет свои преимущества. Но вы не пишите упакованные кода/сокращен; вы начинаете с приличным код и затем запустить программу на нем.)

Поскольку ваше намерение состоит в том, чтобы сделать одну вещь, если остальное верно, код должен сказать, что.

8
ответ дан 12 ноября 2011 в 06:11 Источник Поделиться