Difference between revisions of "Style/ru"

From KolibriOS wiki
Jump to navigation Jump to search
Line 1: Line 1:
== Стиль оформления ==
+
== Правила SVN для ядра ==
 +
* Табуляции запрещены.
 +
* Строка начинается с восьми пробелов. Далее идёт имя команды или макроса. Если имя короче восьми символов, то оно дополняется пробелами до восьми символов; если нет, то далее идёт один пробел. Потом опционально идут аргументы, разделённые запятой и одним пробелом после неё.
 +
* Префиксы lock/rep[z|e|nz|ne] считаются логическим целым с последующей командой и отделяются одним пробелом.
 +
* Все файлы с кодом должны обладать служебным свойством 'svn:eol-style' со значением 'native'.
 +
* Все текстовые файлы должны быть в кодировке UTF-8 без BOM.
  
Рекомендации по оформлению кода.
+
== Рекомендации ==
 
+
* Переменные должны иметь либо исчерпывающее название без сокращений, либо комментарий.
При написании процедур необходимо перед процедурой указывать входные, выходные параметры, так же указывать какие регистры изменяются.
+
* То же самое желательно применять и к меткам, а так же располагать их в отдельной строке без отступа.
 
+
* При написании процедур необходимо описывать её назначение, входные и выходные параметры, изменяемые регистры:
<syntaxhighlight lang="asm"> ;in:  eax = pointer
+
<syntaxhighlight lang="asm">
;     ebx = PID
+
; doing job
;out: eax = return code in (0,-1)
+
subroutine:
;destroys eax
+
; in:  eax = some data
;================================
+
;     ebx -> some pointer
subrutine:</syntaxhighlight>
+
; out: eax = result data
 
+
; destroys ebx</syntaxhighlight>
При написании процедур очень полезно комментировать их способом, показанным ниже.
 
 
 
Тогда даже человек, только начинающий изучать ассемблер, сразу поймёт, что далает данная функция. И наоборот, даже самому опытному программисту может понадобится некторое время просто на понимание того, что делает данная функция.
 
 
 
<syntaxhighlight lang="asm"> ;-----------------------------------------------------------------------------
 
proc key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
 
;-----------------------------------------------------------------------------
 
  ...
 
  ...
 
  ...
 
endp</syntaxhighlight>
 
 
 
Если Вы вносите изменения или добавление в программу, неважно каких размеров, полезно как-то помечать добавленный код, попутно описывая, какую операцию он выполняет. Тогда потом никто не  будет недоумевать "А это здесь откуда и что оно вообще делает?".
 
 
 
Делать это можно так, как показано ниже:
 
 
 
<syntaxhighlight lang="asm"> ;// diamond [ (convert size from decimal representation to dword)
 
;--    mov    edx,dword[@PARAMS+1]
 
  mov esi,@PARAMS+1
 
xor edx,edx
 
xor eax,eax
 
    @@: lodsb
 
test al,al
 
jz @f
 
lea edx,[edx*4+edx]
 
lea edx,[edx*2+eax-'0']
 
jmp @b
 
    @@:
 
;// diamond ]</syntaxhighlight>
 
  
 
[[Category:Кодинг]]
 
[[Category:Кодинг]]

Revision as of 23:45, 10 February 2016

Правила SVN для ядра

  • Табуляции запрещены.
  • Строка начинается с восьми пробелов. Далее идёт имя команды или макроса. Если имя короче восьми символов, то оно дополняется пробелами до восьми символов; если нет, то далее идёт один пробел. Потом опционально идут аргументы, разделённые запятой и одним пробелом после неё.
  • Префиксы lock/rep[z|e|nz|ne] считаются логическим целым с последующей командой и отделяются одним пробелом.
  • Все файлы с кодом должны обладать служебным свойством 'svn:eol-style' со значением 'native'.
  • Все текстовые файлы должны быть в кодировке UTF-8 без BOM.

Рекомендации

  • Переменные должны иметь либо исчерпывающее название без сокращений, либо комментарий.
  • То же самое желательно применять и к меткам, а так же располагать их в отдельной строке без отступа.
  • При написании процедур необходимо описывать её назначение, входные и выходные параметры, изменяемые регистры:
; doing job
subroutine:
; in:  eax = some data
;      ebx -> some pointer
; out: eax = result data
; destroys ebx