Правила оформления кода

Events from the world of KolibriOS and its developers
  • Легче потратить один день и отформатировать весь код. И не нужно лишних телодвижений в будущем.
    Насчёт коротких меток, есть только одна такая, которую я лично всегда пишу на одной строке с инструкцией - это @@. Все остальные метки не имеют права быть короткими (и я никогда не пишу их на одной строке с инструкцией), дабы не затруднять понимание кода.
    Что касается вопроса SoUrcerer'а насчёт редакторов, то таким является по крайней мере FASMW (удивительно, не правда ли). А вообще, любой уважающий себя и ориентированный на программистов редактор по крайней мере поддерживает авто-отступ.
    По поводу lock согласен с Serge'ем.
    И ещё, я бы всё-таки подумал над 5-м пунктом, потому что решать проблему наполовину - это как-то странно. Пусть даже и без валидации, но соглашения должны быть достигнуты.
    in code we trust
  • Легче потратить один день и отформатировать весь код. И не нужно лишних телодвижений в будущем.
    Насчёт коротких меток, есть только одна такая, которую я лично всегда пишу на одной строке с инструкцией - это @@. Все остальные метки не имеют права быть короткими (и я никогда не пишу их на одной строке с инструкцией), дабы не затруднять понимание кода.
    Что касается вопроса SoUrcerer'а насчёт редакторов, то таким является по крайней мере FASMW (удивительно, не правда ли). А вообще, любой уважающий себя и ориентированный на программистов редактор по крайней мере поддерживает авто-отступ.
    По поводу lock согласен с Serge'ем.
    И ещё, я бы всё-таки подумал над 5-м пунктом, потому что решать проблему наполовину - это как-то странно. Пусть даже и без валидации, но соглашения должны быть достигнуты.
    in code we trust
  • может быть стоит разделить метки: глобальные, локальные (.label:) и супер-локальные(@@)
    я привык начинать глобальные с начала, а остальные с отступом 4 пробела.
    и теперь визуальное оформление циклов будет невозможно, что не есть хорошо.

    еще 2 момента которые хотелось бы стандартизировать:
    1. описание процедур (in, out параметры)
    2. логические разделители:
    ;********************************************
    ;======================
    и т.п.
  • Тексты, преобразованные текущей версией автоматики, можно посмотреть на http://ftp.kolibrios.org/users/CleverMouse/kernel-trunk .
    Отступы меток пока никак не стандартизуются.
    Визуальное оформление циклов в ассемблере скорее затрудняет восприятие и в любом случае должно либо быть по всему ядру, либо не быть по всему ядру, и по всему ядру его нет.
    Сделаем мир лучше!
  • Я в своё время пробовал использовать отступы для циклов и вложенных условий, но не понравилось (да и не всегда возможно, если пишется с прицелом на оптимизацию)...

    А ещё надо бы каждую подпрограмму снабжать подробным комментарием относительно её функций, входных-выходных параметров, особых условий и т.д. и т.п.
  • Мне несложно, раз я ввожу правила, заодно добавить ещё какие-нибудь правила для проверятора и/или украшателя, но а) поскольку мне для комфортной работы достаточно уже приведённых, то новых правил от меня не ждите и б) необходимое условие для ввода правила - поддержка хотя бы двоих участников обсуждения.
    Сделаем мир лучше!
  • В kernel.asm метки l.5 l.6 l.7 (отличные имена для глобальных меток) выравнены на 4 байта.
  • Я конечно не программист со стажем, совсем без стажа, но на сколько мне удалось въехать, именно так я и оформляю код, по этому я за. :)
  • Отступы для меток не регулируются никак, я жду консолидированных предложений.
    Сделаем мир лучше!
  • предлагаю так:
    глобальные - с начала
    локальные - 4 пробела
    @@ - 4 пробела, на одной строке с командой
  • Метки на одной строке с командой неудобны при необходимости добавления кода с учётом того, что svn оперирует строками:

    Code: Select all

    ...
    jnz @f
    xor ecx, ecx
    @@: dec ebx
    jnz label
    ...
    
    Если в этом коде выяснится, что после первого перехода, но до второго нужно добавить xor eax,eax, то это затронет две строки

    Code: Select all

    ...
    jnz @f
    xor ecx, ecx
    @@: xor eax, eax ; добавленная строка
    dec ebx ; как бы изменённая строка; на самом деле она не менялась
    jnz label
    ...
    
    Кроме того, добавление исключения из общего правила - в данном случае, "каждая метка на отдельной строке" - должно быть чем-то обосновано.
    Сделаем мир лучше!
  • Если следовать логике ассемблера, то каждая строка это команда, у него ведь строчно-последовательное выполнение :), значит в одной строке одна команда...
  • для меня не принципиально. Хотя я тоже пишу на отдельной строке.
  • Лучше метки совсем без отступа и глобальные и локальные. Ещё я бы увеличил отступ команд с 8 до 12 пробелов что бы длинные метки не наползали на код. И совсем хорошо было бы заменить глобальные метки локальными там, где они в действительности локальные. Свой код от ненужных глобальный меток я почищу.
  • Who is online

    Users browsing this forum: No registered users and 2 guests