Новые книги

Задачи рефакторинга тесно связанны с задачами написания понятного, удобного кода. Соответственно, если я пишу как следует писать или чего лучше избегать — это к рефакторингу не относится. С одной стороны. Но ведь следуя этим рекомендациям, вы можете пересмотреть свой код и исправить потенциальные ошибки. А вот это уже чистой воды рефакторинг. Поэтому я не буду особенно зацикливаться именно на рефакторинге, а буду рассказывать о хорошем, понятном коде.

Разумеется, моё представление о хорошем коде может коренным образом отличаться от вашего и тут я не претендую на статус непогрешимого. Хочу только заметить, что всё, что изложено в этой книге основано на многолетних наблюдениях и в целом, так или иначе, согласуется с общепризнанными подходами к программированию.

Примеры я буду приводить на языке Object Pascal. В основном я работаю на нём, пишу на Delphi. Предвидя нападки со стороны поклонников C-подобных языков, скажу два тезиса:
Instagram сегодня – самая популярная и удобная площадка, с помощью которой можно стать действительно знаменитым. Петр Плосков – Instagram-продюсер № 1 в России, занимающийся продвижением Дмитрия Маликова, Натальи Рудовой, Марии Миногаровой, Иды Галич, Ольги Медынич, Ники Вайпер и других знаменитостей с миллионными аудиториями. В своей книге Петр рассказывает обо всем, что необходимо знать, чтобы стать следующей звездой.

Разрешенная вложенность элементов


Разрешенная вложенность элементов

Этот раздел описывает, каким образом в HTML 3.2. элементы могут быть вложены. Здесь не приводятся правила упорядочения или обеспечения повторной вложенности элементов. Здесь просто даются ответы на вопросы в форме: может ли элемент X появится в пределах элемента Y?

Та же самая информация представлена в описании отдельных тегов в частях Допустимый контекст и Содержимое. Здесь это представлено в сжатой форме и носит иллюстративный характер.

Заметки на память:
(Пояснения к списку)

  • Текст со словами на верхнем регистре описывает элементы HTML.
  • Слово, написанном на нижнем регистре - термин, описывающий сочетание HTML элементов.
  • Элементы могут содержать внутри себя список других элементов, которые находятся в пределах этого элемента. Если нет такого списка, никакая вложенность элементов не разрешена. Исключение составляют элементы block и text. Для них допустимо такое содержание, как это описано в настоящем разделе.
  • #PCDATA означает "символьные данные, используемые при грамматическом разборе" (содержит только escape последовательности, например, ä, теги HTML - не разрешены).
  • body.content (body-содержание) означает: элементы, которые перечислены под элементом BODY.

HTML

  • HEAD
    • TITLE, SCRIPT, STYLE
      • #PCDATA
    • ISINDEX, BASE, META, LINK
  • BODY
    • H1, H2, H3, H4, H5, H6
      • text
    • block
      • P
        • text
      • UL, OL, DIR, MENU
        • LI
          • text
          • block

          (в пределах DIR или MENU, элемент LI не содержит блок)

      • DL
        • DT
          • text
        • DD
          • text
          • block
      • PRE
        • text (без IMG, BIG, SMALL, SUB, SUP, FONT)
      • DIV, CENTER, BLOCKQUOTE
        • body.content
      • FORM
        • body.content без FORM
      • ISINDEX
      • HR
      • TABLE
        • CAPTION
          • text
        • TR
          • TH, TD
            • body.content
    • ADDRESS
      • text
      • P
        • text
    • text
      • #PCDATA
      • TT, I, B, U, STRIKE, BIG, SMALL, SUB, SUP
        • text
      • EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE
        • text
      • A
        • text
      • IMG
      • APPLET
        • text
        • PARAM
      • FONT
        • text
      • BASEFONT, BR
      • SCRIPT
        • #PCDATA
      • MAP
        • AREA
      • INPUT
      • SELECT
        • OPTION
          • #PCDATA
      • TEXTAREA
        • #PCDATA

Чтобы упростить описания элементов, автор использует термин текстовый контейнер, чтобы обозначить любой элемент, который может непосредственно содержать текстовый элемент. Следующие элементы являются текстовыми контейнерами:

A, ADDRESS, APPLET, B, BIG, BLOCKQUOTE, BODY, CAPTION, CENTER, CITE, CODE, DFN, DIV, EM, FONT, FORM, H1, H2, H3, H4, H5, H6, HTML, I, KBD, LI, P, PRE (с ограничениями), SAMP, SMALL, STRIKE, STRONG, SUB, SUP, TD, TH, TT, U, VAR.

Нижеследующие элементы не являются текстовыми контейнерами, однако могут содержать текстовые элементы не непосредственно, а через элементы, которые являются текстовыми контейнерами:

DD, DIR, DL, DT, MENU, OL, TABLE, TR, UL.

Нижеследующие элементы совсем не включают текстовые элементы:

AREA, BASE, BASEFONT, BR, HEAD, HR, IMG, INPUT, ISINDEX, LINK, MAP, META, OPTION, PARAM, SCRIPT, SELECT, STYLE, TEXTAREA, TITLE.

Также автор вводит термин блоковый контейнер, чтобы обозначить любой элемент, который может непосредственно содержать блоковый элемент. Блоковыми контейнерами являются:

BLOCKQUOTE, BODY, CENTER, DD, DIV FORM HTML, LI (в пределах UL или OL), TD, TH.