Толкова. Много. Скоби.
Credits: XKCD |
Зачудих се как е възможно подобен код да е четим за когото и да било. Вече очевидно никой не се интересува от това... :(
Първото ми предположение беше да подредя кода както бих го подредил в стил "всеки друг език за програмиране":
BAD
- ;; Well, ain't that cute...
- (defun f (x)
- (cond
- ((= x 1337) x)
- (t nil)
- )
- ) ; ... but it's WRONG.
Оказа се, че конвенцията не само е против излишните празни места, но дори редове само с по една затваряща скоба на тях се считат за лоша практика. Стига де!
Имайки това предвид, за по-удачен вариант се смята следната версия:
GOOD
- (defun f (x)
- (cond ((= x 1337) x)
- (t nil)))
Основната разлика:
- по 2 интервала на нов ред
- аргументите се подреждат един под друг
- затварящите скоби не се изолират на цял ред
Индентацията добре, но скобите защо така?? Обяснението, което намерих, е че опитните Lisp програмисти не обръщат внимание на броя на скобите, а се съсредоточават върху това, което се случва между тях. И втората причина е, че просто се цели минимизирането на редове код (което според мен е по-рационалната причина).
Странно, но ще свикна...
Няма коментари:
Публикуване на коментар