Почему функции возвращают значения согласованного типа? Для соблюдения следующих двух правил:
Правило 1 - функция имеет «тип» - входы, отображаемые на выходы. Он должен возвращать согласованный тип результата, или он не является функцией. Это беспорядок.
Математически мы говорим, что некоторая функция F является отображением из области D в диапазон R. F: D - & gt; R
. Область и диапазон образуют «тип» функции. Типы ввода и тип результата столь же важны для определения функции, как имя или тело.
Правило 2 - когда у вас есть «проблема» или не удается вернуть правильный результат , вызывать исключение.
def x (foo): if 'bar' в foo: return (foo, 'bar') raise Exception ("oh, dear me.")
Вы можете нарушить вышеуказанные правила, но стоимость долгосрочной ремонтопригодности и понятности является астрономической.
«Не было бы дешевле памяти мудрый, чтобы вернуть Нет? Неверный вопрос.
Точка not предназначена для оптимизации памяти за счет ясного, понятного и очевидного кода.
Вообще говоря:
CSS . Существует множество методов для укладки контента (в зависимости от точного эффекта, который вы хотите, Holy Grail является общим желанием).
Свойства overflow
обрабатывают прокрутки подсекций страниц, хотя дизайнеры, которые думают, что имеют меню, использующее экранное пространство все время , хорошая идея, как правило, неправильна.
(т. е. накладывайте на на странице такие вещи, как базовая структура, меню навигации и т. д. без копирования / вставка их)
Система шаблонов (или система включения), которая либо работает на стороне сервера (чаще всего), либо во время сборки (которая может поддерживать HTTP-серверы, которые разрешают только статические файлы).
Язык, в котором это реализовано, не имеет значения, PHP так же распространен, как гадость, Java - это вариант, я склонен к Perl (а точнее: Template Toolkit ), есть много других. JavaScript становится все более популярным для этого типа работы, при этом инструменты, такие как собирают , становятся доступными. Вы можете полностью использовать статический генератор сайта .
Используйте поисковую систему, чтобы найти популярные языки шаблонов или включить системы для вашего языка программирования по выбору.
JavaScript, обычно с объектом XMLHttpRequest (метод, известный как Ajax), и (если вы делаете серьезные изменения содержимого) в сочетании с History API (так что закладок и ссылок все еще работает). Гитуб - хороший пример этого . Существуют различные рамки, такие как React и Angular , которые пытаются облегчить ситуацию. Обратите внимание на ограниченную поддержку браузера и все другие вещи, которые могут вызвать JS-файл, с использованием хороших принципов дизайна . Один из подходов к тому, чтобы сделать эти вещи прочными, - написать изоморфный JS .
Фреймы не заменяются новой «технологией». Современное состояние заключается в том, чтобы поместить весь контент в один и тот же документ и создать его с помощью CSS. Конечно, серверная часть может помочь вам в этом.
Используйте позиционирование CSS для создания фреймоподобного интерфейса и AJAX для изменения содержимого контейнера. Вы можете использовать JavaScript-фреймворки, такие как jQuery , Prototype или MooTools для обработки запросов AJAX.
Однако, если вы хотите включая контент из другого домена, вы должны использовать <iframe>
, так как AJAX следует за той же политикой происхождения .
Если вы хотите написать DRY (не повторяйте себя), вы может использовать какую-то систему шаблонов (PHP, Ruby, Pearl, Python - и, конечно, фреймворк для этих языков).