Вверх ↑
Ответов: 1088
Рейтинг: 112
#1: 2009-04-14 15:26:04 ЛС | профиль | цитата
Стандарт построения схем HiAsm. Ревизия 5


Стандарт оформления кода обычно принимается и используется некоторой группой разработчиков программного обеспечения с целью единообразного оформления совместно используемого кода. Такой стандарт сильно зависит от используемого языка программирования. Например, стандарт оформления кода для языка Си будет серьёзно отличаться от стандарта для языка BASIC, рассмотрим стандарт оформления схем в HiAsm. Данный стандарт поможет вам сделать ваши схемы более понятными для себя и для других пользователей.

1. Размещайте компоненты и соединительные линии так, чтобы они были видны на всей своей длине, не заходили под компоненты, минимально пересекались.
[подсказка] При пересечениях можно использовать изменение цвета связей или разрывы.

Add(Button,15355274,70,287)
{
Left=180
Top=140
link(onClick,12607589:doEvent1,[])
}
Add(Hub,12607589,126,287)
{
OutCount=4
link(onEvent1,12247538:doValue,[(158,293)(158,300)])
link(onEvent2,5143648:doValue,[(172,300)(172,314)])
link(onEvent3,791462:doValue,[])
link(onEvent4,330222:doValue,[(147,314)(147,293)])
}
Add(Memory,330222,154,287)
{
}
Add(Memory,12247538,175,294)
{
}
Add(Memory,791462,189,301)
{
}
Add(Memory,5143648,203,308)
{
}
Add(Button,7571719,70,77)
{
Left=180
Top=140
link(onClick,1039708:doEvent1,[])
}
Add(Hub,1039708,126,77)
{
OutCount=4
link(onEvent1,736362:doValue,[])
link(onEvent2,5260965:doValue,[])
link(onEvent3,4994190:doValue,[])
link(onEvent4,13799406:doValue,[])
}
Add(Memory,736362,287,77)
{
}
Add(Memory,5260965,245,84)
{
}
Add(Memory,4994190,203,91)
{
}
Add(Memory,13799406,161,98)
{
}
Add(Button,14235123,70,168)
{
Left=180
Top=140
link(onClick,2315711:doEvent1,[])
}
Add(Hub,2315711,126,168)
{
OutCount=4
link(onEvent1,6499647:doValue,[])
link(onEvent2,15240531:doValue,[])
link(onEvent3,7770779:doValue,[])
link(onEvent4,2225530:doValue,[])
}
Add(Memory,6499647,154,168)
{
}
Add(Memory,15240531,196,175)
{
}
Add(Memory,7770779,238,182)
{
}
Add(Memory,2225530,280,189)
{
}
Add(InfoTip,15801878,63,259)
{
Info=#13:Не правильно.|
Font=[MS Sans Serif,8,0,255,1]
Width=267
Height=88
}
Add(InfoTip,7806071,63,56)
{
Info=#10:Правильно.|
Font=[MS Sans Serif,8,0,32768,1]
Width=267
Height=81
}
Add(InfoTip,9397504,63,154)
{
Info=#29:Правильно для данного случая.|
Font=[MS Sans Serif,8,0,32896,1]
Width=267
Height=88
}
Add(InfoTip,16672880,63,364)
{
Info=#13:Не правильно.|
Font=[MS Sans Serif,8,0,255,1]
Width=267
Height=109
}
Add(StrList,3305058,154,399)
{
Point(onGetIndex)
Point(onGetString)
}
Add(Button,6354273,70,399)
{
Left=180
Top=140
link(onClick,8697520:doEvent1,[])
}
Add(Hub,8697520,126,399)
{
OutCount=4
link(onEvent1,3305058:doAdd,[])
link(onEvent2,14541304:doValue,[])
link(onEvent3,6132348:doValue,[])
link(onEvent4,2707492:doValue,[])
}
Add(Memory,14541304,203,406)
{
}
Add(Memory,6132348,252,413)
{
}
Add(Memory,2707492,294,420)
{
}


2. Старайтесь не соединять элементы, находящиеся на большом расстоянии. Если это неизбежно используйте "разрыв"*.
Также можно задействовать глобальные переменные(минимально достаточное количество).
[заметка] Не желательно использовать более 5 разрывов в одном контейнере.
[подсказка] Не забывайте давать имена глобальным переменным и разрывам в соотвествии с их ролью в схеме.
3. В большихзапутаных схемах объединяйте группы элементов в блоки (с помощью мультиэлементов) в зависимости от функций данной группы.
[подсказка] Удобно использование "вывески" вокруг мультиэлемента с указанием нго функций.

Add(MultiElement,8433487,392,245)
{
}
BEGIN_SDK
Add(EditMulti,12952407,21,21)
{
}
END_SDK
Add(MultiElement,6198815,392,322)
{
@Hint=#11:Я-контейнер|
}
BEGIN_SDK
Add(EditMulti,14179849,21,21)
{
}
END_SDK
Add(MultiElement,3900317,392,406)
{
}
BEGIN_SDK
Add(EditMulti,2131665,21,21)
{
}
END_SDK
Add(InfoTip,9019020,511,245)
{
Info=#12:Правильно ;)|
Font=[MS Sans Serif,8,0,32768,1]
Width=99
Height=18
}
Add(InfoTip,4294199,511,322)
{
Info=#28:(см комментарий на мультике)|31:Правильно, но менее визуально :(|
Font=[MS Sans Serif,8,0,32896,1]
Transparent=1
Width=176
Height=39
}
Add(InfoTip,6863599,511,406)
{
Info=#15:Не правильно :(|
Font=[MS Sans Serif,8,0,255,1]
Transparent=1
Width=92
Height=18
}
Add(InfoTip,7272802,364,224)
{
Info=#13:Я - контейнер|
Width=92
Height=60
}

4. Не следует злоупотреблять мультиэлементами, много мультиэлементов затрудняют понимание и снижают вплоть до нуля наглядность схемы из-за частых переходов между ними.
5. Не разбрасывайте связаные элементы на большие расстояния.
Варианты построения элементов:
  • Линейно - одинаковый отступ сверху и между элементами.
  • Ступеньки - одинаковый отступ, но подъём или спуск каждого элемента.
  • Реверс - отступ не важен, от элемента идет связь к элементу левее от него. Возможны сочитания и исключения.
    
    Add(Button,14140950,469,98)
    {
    Left=100
    Top=5
    Caption=""
    link(onClick,220922:doEvent3,[(737,104)(737,237)])
    }
    Add(Button,13221010,469,140)
    {
    Left=35
    Top=5
    Caption=""
    Point(doEnabled)
    link(onClick,7351926:doWork2,[])
    }
    Add(HubEx,7351926,560,133)
    {
    Angle=3
    link(onEvent,220922:doEvent2,[(564,129)(768,129)(768,230)])
    }
    Add(Hub,3928711,728,217)
    {
    link(onEvent1,7351926:doWork3,[(754,223)(754,176)(564,176)])
    link(onEvent2,564027:doEvent1,[(833,230)(833,531)])
    }
    Add(Hub,774450,553,301)
    {
    link(onEvent1,3928711:doEvent1,[(747,307)(747,244)(716,244)(716,223)])
    link(onEvent2,475750:doEvent1,[(579,314)(579,268)(471,268)(471,202)])
    }
    Add(Hub,11257150,679,336)
    {
    InCount=2
    link(onEvent1,774450:doEvent1,[(705,342)(705,324)(541,324)(541,307)])
    link(onEvent2,220922:doEvent1,[(823,349)(823,223)])
    }
    Add(Hub,220922,1057,217)
    {
    InCount=3
    }
    Add(Hub,564027,924,525)
    {
    InCount=2
    }
    Add(Hub,475750,476,196)
    {
    link(onEvent1,11257150:doEvent2,[(588,202)(588,349)])
    link(onEvent2,11257150:doEvent1,[(588,209)(588,342)])
    }
    Add(Button,7370672,217,119)
    {
    Left=100
    Top=5
    Caption=""
    link(onClick,11937981:doEvent3,[])
    }
    Add(Button,13502820,105,112)
    {
    Left=35
    Top=5
    Caption=""
    Point(doEnabled)
    link(onClick,955966:doWork2,[])
    }
    Add(HubEx,955966,196,105)
    {
    link(onEvent,11937981:doEvent2,[])
    }
    Add(Hub,797734,161,161)
    {
    link(onEvent1,955966:doWork3,[(200,167)])
    link(onEvent2,3053646:doEvent1,[])
    }
    Add(Hub,15652319,112,182)
    {
    link(onEvent1,797734:doEvent1,[(147,188)(147,167)])
    link(onEvent2,8421655:doEvent1,[])
    }
    Add(Hub,11576193,294,196)
    {
    InCount=2
    PColor(onEvent1,4227327)
    link(onEvent1,15652319:doEvent1,[(320,202)(320,230)(100,230)(100,188)])
    link(onEvent2,11937981:doEvent1,[(350,209)(350,100)(287,100)(287,111)])
    }
    Add(Hub,11937981,294,105)
    {
    InCount=3
    }
    Add(Hub,3053646,217,168)
    {
    InCount=2
    }
    Add(Hub,8421655,161,189)
    {
    PColor(onEvent1,12615680)
    link(onEvent1,11576193:doEvent2,[(230,195)(230,209)])
    link(onEvent2,11576193:doEvent1,[])
    }
    Add(InfoTip,6863599,455,56)
    {
    Info=#15:Не правильно :(|
    Font=[MS Sans Serif,8,0,255,1]
    Width=638
    Height=501
    }
    Add(InfoTip,9019020,70,56)
    {
    Info=#12:Правильно ;)|
    Font=[MS Sans Serif,8,0,32768,1]
    Width=372
    Height=193
    }
    Add(InfoTip,14042859,91,182)
    {
    Info=#9:Ступеньки|
    HAlign=2
    Width=246
    Height=53
    }
    Add(InfoTip,1239726,147,252)
    {
    Info=#52:Как видите расстояние между элементами не одинаковое|28:но хуже от этого не стало ;)|
    Transparent=1
    Width=183
    Height=46
    }
    Add(InfoTip,13738106,280,77)
    {
    Info=#6:Реверс|
    Width=78
    Height=165
    }
    Add(Hub,3836654,161,329)
    {
    OutCount=4
    link(onEvent1,981460:doValue,[])
    link(onEvent2,16316804:doValue,[])
    link(onEvent3,15528442:doValue,[])
    link(onEvent4,10796635:doValue,[])
    }
    Add(Memory,981460,189,329)
    {
    }
    Add(Memory,16316804,231,336)
    {
    }
    Add(Memory,15528442,273,343)
    {
    }
    Add(Memory,10796635,315,350)
    {
    }
    Add(InfoTip,7456423,140,322)
    {
    Info=#9:Ступеньки|
    Width=225
    Height=67
    }
    Add(Hub,16561172,161,434)
    {
    link(onEvent1,12230720:doCase,[])
    link(onEvent2,1268296:doWork2,[])
    }
    Add(Case,12230720,259,434)
    {
    PColor(onTrue,33023)
    link(onTrue,1268296:doWork1,[(306,447)(306,422)(193,422)])
    }
    Add(DoData,14579918,203,441)
    {
    }
    Add(HubEx,1268296,189,434)
    {
    PColor(onEvent,33023)
    link(onEvent,14579918:doData,[])
    }
    Add(InfoTip,3724080,147,399)
    {
    Info=#6:Реверс|
    Width=204
    Height=88
    }

    6. Не используйте верхниенижние точки элементов если нужные значения можно принять из потока.
    
    Add(InfoTip,16155595,546,329)
    {
    Info=#13:Не правильно.|
    Font=[MS Sans Serif,8,0,255,1]
    Width=267
    Height=102
    }
    Add(InfoTip,15725346,546,224)
    {
    Info=#10:Правильно.|
    Font=[MS Sans Serif,8,0,32768,1]
    Width=267
    Height=88
    }
    Add(Math,5148416,616,357)
    {
    link(onResult,16211227:doOperation,[])
    }
    Add(Math,16211227,679,357)
    {
    link(Op1,5148416:Result,[(685,345)(660,345)(660,400)(622,400)])
    link(Op2,2761863:Result,[(692,345)(730,345)(730,410)(573,410)])
    }
    Add(Math,2761863,567,357)
    {
    link(onResult,5148416:doOperation,[])
    }
    Add(Math,4152852,609,252)
    {
    link(onResult,4846620:doOperation,[])
    }
    Add(Math,4846620,672,252)
    {
    link(Op2,12337556:Result,[(685,240)(720,240)(720,300)(566,300)])
    }
    Add(Math,12337556,560,252)
    {
    link(onResult,4152852:doOperation,[])
    }

    7. Используйте "вывески" для выделения и пояснения наиболее сложныхзапутаных и непонятных мест схемы.
    8. Оптимальная дистанция между элементами - 2-3 точки сетки(или 2-3 шага при перемещении элемента).
    [совет] Не пытайтесь сделать из схемы плотный комок.
    9. При "переломе" соединительной линии используйте функцию "выравнивание"(ПКМ на рабочем поле).
    
    Add(Button,6952249,497,329)
    {
    Left=25
    Top=40
    link(onClick,2738446:doOperation,[(565,335)(565,338)])
    }
    Add(Math,2738446,602,332)
    {
    }
    Add(Button,11376456,497,259)
    {
    Left=25
    Top=40
    link(onClick,10273190:doOperation,[])
    }
    Add(Math,10273190,602,259)
    {
    }
    Add(InfoTip,16175854,483,245)
    {
    Info=#9:Правильно|
    Font=[MS Sans Serif,8,0,32768,1]
    Width=176
    Height=60
    }
    Add(InfoTip,7351454,483,315)
    {
    Info=#12:Не правильно|
    Font=[MS Sans Serif,8,0,255,1]
    Width=176
    Height=60
    }

    ЗЫ: слово "стандарт" в заголовке семантической нагрузки не несёт.
    Статья несёт рекомендатеьный характер.
    Продуманые предложения приветствуются.
  • карма: 0
    Время верстки: %cr_time% Текущее время: %time%
    7
    Голосовали:filyaxxxcom, Assasin, andrestudio, AZot, Administrator, flud, EcsTasY