Код должен быть удобочитаемым
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 11.01.23 18:27
Оценка: -2

Для кого мы это пишем


Очень часто читаешь в книжках и статьях, что код должен быть удобочитаемым. Но вот вопрос для кого?

И тогда нам предлагают варианты.
1. Для других людей.
2. Для англоязычных пользователей.

А что насчёт того кто написал этот код, то есть для себя. Почему бы не выйти за рамки и не наплевать на чужие "стандарты".

От ассемблера до смартфона


Что общего у ассемблера и смартфона с точки зрения синтаксиса?
1. Ассемблер не обладает многоуровневым синтаксисом.
2. Экран смартфона в вертикальном положении узок.

На самом деле даже ассемблер в одной строчке содержит одну команду.

Вот я взял случайный код из интернета.
mov ah,9 ; номер функции DOS - в АН

Недостаток здесь в том, что при таком стиле нельзя прокомментировать каждую строчку отдельно.

А что если бы это было вот так.
mov     \; комментарий 1
    ah  \; комментарий 2
    ,   \; комментарий 3
    9    ; комментарий 4


Вообще говоря я не знаю сработает ли это, да и мне всё равно, здесь важен принцип.

Языки высокого уровня C/C++


  токенизатор

Далее беру случайный код из интернета для Си.
int main (void)
{
  puts ("Hello, World!");
  return 0;
}


И разложу его автоматически токенизатором.
int
main
(
void
)
{
puts
(
"
Hello
,
World!
"
)
;
return
0
;
}


Можно создать некую иерархию.
int
main
(
  void
)
{
  puts
  (
    "\
Hello\
,\
World!\
    "
  )
  ;
  return
    0
  ;
}


Но главное, что теперь можно прокомментировать не просто каждую строчку кода, а буквально каждую составляющую программы.
int       //
main      //
(         //
  void    //
)         //
{         //
  puts    //
  (       //
    "\    //
Hello\    //
,\        //
World!\   //
    "     //
  )       //
  ;       //
  return  //
    0     //
  ;       //
}         //

Код так же получил возможность влезать в экран смартфона. Я говорю именно про код, а не комментарии к коду.

Комментарии к коду


Что касается комментариев, то они могут быть разнообразными.
1. Простыми строками. "я коммментарий".
2. Иерархическими тегами. "тег.иерархический".

Так же принадлежать к различным слоям описания конструкций.
1. Инструкции.
2. Шаблоны.
3. Архитектура.

Я не буду приводить конкретные примеры, так как это может привести к неправильному пониманию того, о чём я пишу. Ведь основной смысл не в том, что я навязываю какой-то свой "стандарт" как это делают другие. Я лишь показываю способ как можно писать то, что думаете именно вы, когда пишете код. Или я, если я это буду писать чисто для себя.

Метаредактирование кода


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

Однако по факту имеем то, что имеем. Если человек не может понимать безумные простыни многоуровневого кода без подробных собственноручных объявлений, то что тогда. Мало того, что языки программирования придумали для тех, кто говорит на английском, так ещё и идёт последующее усложнение.

Фактически нет никаких команд типа mov из ассемблера или функции main из Си. Как нет, когда есть? А вот так, это не уровень компьютерной грамотности, в ней всё состоит из нулей и единиц, это уже упрощение сделанные для англичан, но вот русским такие "улучшения" никак не упрощают жизнь.

Логические приёмы


Опять же есть множество логических приёмов, таких как.
1. Анализ. Разложение.
2. Синтез. Сложение.
3. Сравнение.

И так далее, кому надо может почитать "Логика. Учебник для средней школы (1954). Виноградов. Кузьмин". То что я сделал это по сути разложение, которое так же может пригодиться при сравнении и сложении. Хотя стоит отметить, что сложение будет происходить не путём изменения стиля кода, а вставлением строк.

Почему код стал многоуровневым


На вопрос зачем пихать в одну строчку множество понятий я могу сделать предположение, что по привычке. В конце концов книги или их примитивные подобия существуют не одно тысячелетие. Да и речь не предназначена для логических приёмов. Подробнее я писал об этом в статье Словесный поток и чёткие структуры и её продолжении Конспектирование на смартфоне.

Что касается кода, то не смотря на огромное количество способов его писать, причём поддерживаемых компиляторами, люди пишут так как пишут. Нельзя даже сказать, что они пробовали что-то иное и потом поработав с одним и с другим выбрали лучшее. Нет, правда в том, что людям даже в голову не приходит, что можно иначе. В конце концов все мы учились по "одним учебникам".
Отредактировано 11.01.2023 18:31 velkin . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.