Maintable Code

by Ivan Gerasimenko

HTML

<p>Конспект по: <a href="http://learn.javascript.ru/write-unmain-code">learn.javascript.ru/ Как писать неподдерживаемый код</a></p>
<h4>Следуйте соглашениям</h4>
<p>Следуйте соглашениям принятым по проекту (а значит и где-то зафиксированным)<br/>
</p>
<h4>Пишите понятнее, а не короче!</h4>
<p>// код из jQuery<br/>
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
</p>
<h3>Именование</h3>
<h4>Ясные имена переменных</h4>
<p>a VS anchor, mc VS moneyCounter...</p>
<h4>Счётчик цикла i,j,k</h4>
<p>Не x,y,p :) !!!</p>
<h4>Английские названия и без сокращений</h4>
<p>link VS ln, lnk, ssylka</p>
<h4>Конкретные имена</h4>
<p>Никакой абстракции: userInfo VS data; users VS arr;</p>
<p>Тип данных легко посмотреть в отладчике</p>
<h4>Словарь терминов проекта</h4>
<p>MUST BE!!!</p>
<p>user VS user, visitor, u, person...</p>
<h4>Никогда!!!</h4>
<p>
    <ul>
        <li>похожие имена</li>
        <li>акронимы сокращения<br/>
            fillDow... he meant fillDaysOfWeek...
        </li>
        <li>хитрые синонимы</li>
        <li>повторное использованеи переменных под разные данные<br/>
            var elem = new Something();<br/>
            // using elem in code of 20 lines<br/>
            elem = new AnotherThing();<br/>
            // using elem in code of 20 lines
        </li>
        <li>подчеркивания в именах _ и __</li>
        <li>mega..., super..., nice...</li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</p>
<h3>Функции</h3>
<h4>Решают одну задачу</h4>
<p>Зачем делать огромную не тестируемую портянку?!?!</p>
<h4>Имя функции в точности совпадает с её назначением</h4>
<p>Зачем функции show() прятать элемент при определённых условиях?!?</p>
<h4>Функция возвращает значение в соответствии с названием</h4>
<p>Фукнция с названием is..., check..., verify..., find... должны проверять искать, но не модифицировать объект и возвращать Boolean/Object соответственно</p>
<h4></h4>
<p></p>