По поводу JS. Когда-то я писал жуткий спагетти-код, который выглядел, я думаю, до боли знакомо каждому, кто учил JS и jQuery:
// main.js
$(function() {
$(".someselector1").click(function() {
// Что-то
});
$(".someselector2").change(function() {
// Что-то
});
$(".someselector3").width($(".header").first().width());
});
И все было хорошо, потому что поддерживать или что-то менять в этом коде не приходилось. Сайт сдавался, приходил следующий. Но я всегда чувствовал, что можно как-то иначе. Странно, но первое озарение мне пришло случайно, когда я увидел на хабре мини-обзор новой CMS и полез посмотреть, что это за зверь. Зашел на сайт и заодно решил заглянуть в исходники js:
www.fork-cms.com/frontend/core/js/frontend.js. Помню, как мне понравилось тогда, как все выглядит. Чисто, красиво, методы не перегружены кучей инструкций, ответственность каждого метода прозрачна и понятна (стоит сказать, что тогда этот файлик выглядел немного иначе, сейчас уже заметно подрос). Я просто взял эту структуру кода на фронтенд и такую же на бэкенд для самописной CMS.
Потом что-то менял в ней, потом выкинул вовсе. Попробовал разные MVC фреймворки, потом что-то еще было. В текущем проекте ядром клиентского кода служит незамысловатый
Base.js. В общем суть в том, что вариться в своей каше очень опасно. Нужно смотреть, как оно у других, пробовать модные штуки и решать, подходят они вам или нет. А чтобы понять, насколько хорош ваш код, посмотрите, насколько он гибок, насколько сложно его масштабировать, высок или порог входа для того, чтобы понять структура кода и что происходит и т.д. и т.п. Думаю, то же самое отчасти справедливо и для HTML с CSS.