Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

Стандарты оформления   Найти похожие ветки 

 
AndrewK   (2005-09-01 13:55) [0]

Доброго времени суток, господа!

Есть желание унифицировать работу отдела разработки в области оформления исходных кодов. Нашел несколько стандартов для Delphi, но для БД ничего найти не смог.

Поделитесь опытом, кто-нибудь использует в своей работе стандарты по оформлению кода, именованию объектов баз данных (таблиц, процедур, функций), стандарты оформления интерфейса.

Если не жалко, то киньте какой-нибудь пример стандарта на разработку БД или ссылку на него.

P.S.  Вопрос встал потому что отдел разработки увеличился до пяти человек, управлять ими становиться сложнее. Плюс ко всему каждый пишет в своем стиле.

Заранее благодарен.


 
Ega23 ©   (2005-09-01 14:15) [1]


                        Соглашение о наименованиях  
                        --------------------------  
При описании структур данных предлагается использовать следующие
соглашения и мнемонические нотации.

 Общие положения.

1. Имена таблиц и полей  должны максимально описывать
соответств.сущности.
2. В качестве имен не  допускается  применение слов, которые могут оказаться
резервированными в используемых программных средах
(напр, слов ORDER, SELECT, DENY, etc)
3. Следует помнить, что для таблиц, импортируемых и экспортируемых
возможны ограничения по длине имени табл. - 8 симв, и по длине
имени поля - до  10 симв. Эти значения считаются рекомендованными.

 Таблицы:
[<Сокр.Групповое имя>]<Сокр.Функциональное имя таблицы><s|es|Pl|Gr>,
где s,es - суффикс для справочников (списков).
   Напр, Pers - справ. персонала, Sexes - список полов,
         HWTasks- список заданий для апппатуры
   Pl- суффикс для  таблиц соответствия (планов)
   Gr  - суффикс для  таблиц - описателей групп

 Поля (колонки) таблиц:
<Сокр.имя табл.(сущности)|Dat|Unid|Развернутое имя>[<Доп.Функц.имя>][<Описатель логич.типа>][Нумератор]
Unid - уник.идентификатор(исп.только для идент.записи,без ссылок на него)
Dat - дата

<Доп.Функц.имя>=<St|Fl|Gr|Typ|Sum>,
где
St- статус
Fl - флаг (спец.признак)
Gr - группа
Typ - тип
Sum - сумма

<Описатель логич.типа>=<Сod|Nam|Lab|Msk|Ord|Id|Nr|Num|Val|Mod|Min|Max|
                       Prc|Not|Txt|In|Out|Add|Cl>

Сod - код,перв.ключ,тип данных integer
Id  - уник.идентификатор - перв.ключ, тип данных integer [identity]
Nam - полное имя, тип данных varchar 32,64
Lab - краткое имя, тип данных char 4,8
Msk - маска (использ/нет), тип данных tynyint
Ord - порядок отображения, тип данных integer
Nr  - порядковый (регистрационный) номер (напр., документа) integer,varchar
Num - число, количество, тип данных numeric
Val - числовое значение, величина, тип данных numeric
Mod - режим работы, обработки tynyint
Min - минимальное  значение,  тип данных int, numeric
Max - максимальное  значение,  тип данных int, numeric
Prc - числовое значение в процентах, тип данных numeric 5.2
Not - примечание, тип данных varchar 64,255
Txt - текст, описание varchar 64,255,4096,TEXT...
In  - начальный,исходный  (напр.,для дат)
Out - конечный,выходной   (напр.,для дат)
Add - ссылка на дополнительную информацию
Img - образ,картинка,бинарный массив
Cl  - цвет
Cnt - счетчик

[Нумератор]=[0,1..]

Замечания.
1. Развернутое имя использовать не рекомендуется.
2. Дублирование повторяющихся букв категорически не рекомендуется.
  Например, следует писать не LettTypeCode, а Letypcod.

 Индексы и дополнительные ключи:

<Ix|Ux|Cx>_<Имя Таблицы (м.б.сокращ.)>_<Имя Поля (м.б.сокращ.)> ,
где Ix - префикс обычного индекса
Ux - префикс уникального  индекса
Cx - префикс кластерного  индекса

 Хранимые процедуры

S_<Сокр.Имя функ.группы><Сокр. Функ. имя хранимой процедуры>
X_<Сокр.Имя функ.группы><Сокр. Функ. имя внешней хранимой процедуры>

 Просмотры (view)

V_<Сокр.Имя функ.группы><Сокр.Функ. имя просмотра >

Назначение Доменов(типов данных)

DT0  Дата-время, default 0 (1900.00.00) datetime
DTnow  Дата-время, default тек.время datetime
Flag  Флаг, default  0 tinyint
GUID  Global Identifier uniqueidentifier
Img  Картинка image
INT1  1-байтовое целое, default 0 tinyint
INT2  2-байтовое целое, default 0 smallint
INT4  4-байтовое целое, default 0 int
IntIdentity Автоинкрементное целое Int Identity(0,1)
LAB4  Метка - строка 4 символа char(4)
LAB8  Метка - строка 8 символов char(8)
LongString1024 Длинная строка 1024 симв. varchar(1024)
LongString2048 Очень длинная строка 2048 симв. varchar(2048)
LongString4096 Очень длинная строка 4096 симв. varchar(4096)
Mask  Маска (1-используется,0-нет), default 1 bit
Nam16  Наименование - строка 16 симв varchar(16)
Nam32  Наименование - строка 32 симв varchar(32)
Nam64  Наименование - строка 64 симв varchar(64)
Not255 Примечание - строка 255 симв varchar(255)
Prc5_2 Процент (не целое) numeric(5,2)
Sum16_2 Сумма (не целое) numeric(16,2)


 
Fay ©   (2005-09-01 15:11) [2]

2 AndrewK   (01.09.05 13:55)
Не надо искать. Надо договариваться.


 
AndrewK   (2005-09-01 15:22) [3]

>Fay ©   (01.09.05 15:11) [2]

>Не надо искать. Надо договариваться.

Договариваться о чем? Просто сесть и сказать: "Ну что мужики, давайте ка составим стандарт и будем его придерживаться?" Представляю что начнется. Думаю мы общим мозговым штурмом такое придумаем. :)
Уверен, что если выносить такое предложение, то необходим какой-то прототип, который можно обсудить и дополнить. Так лучше будет.
Вот этот прототип я сейчас и делаю.
А насчет договоренностей: пробовал. Поговорили, обсудили, договорились. Какое-то время все нормально, затем опять начинается творчество. В итоге разброд в коде, разный вид интерфейсов, структуры базы данных свои у каждого программиста. Надоело. Да и чревато в недалеком будущем.

>Ega23

Спасибо. Буду изучать.


 
Ega23 ©   (2005-09-01 15:37) [4]

2 AndrewK   (01.09.05 15:22) [3]
Спасибо. Буду изучать.

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


 
Sergey13 ©   (2005-09-01 15:57) [5]

2[3] AndrewK   (01.09.05 15:22)
>А насчет договоренностей: пробовал. Поговорили, обсудили, договорились. Какое-то время все нормально, затем опять начинается творчество.

Вы просто остановились на полпути. 8-)
Надо было продолжать. Зафиксировали в приказе по подразделению и установили наказания за несоблюдения. Все расписались в приказе об уведомлении.
Дальше дело в соблюдении и контроле.
ИМХО, так.
Хотя, если честно, если ты как начальник (?) не можешь совладать с 5 подчиненными, то и приказ со стандартом может не помочь. ИМХО, опять же.

ЗЫ: Ничего личного, кроме опыта. 8-)


 
AndrewK   (2005-09-01 16:14) [6]

> Sergey13 ©

Начальником я стал буквально на днях, до этого был рядовым программером, поэтому договоренности с другими были не более чем добрыми пожеланиями. Тем более проекты каждый вел самостоятельно. Ну а еще ведь программисты ненавидят контроль и чтобы кто-то лез в их код и учил как надо делать? Правда? :)  Знаю, сам такой.

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

Ух как загнул, как в книжках. :)    

А насчет пяти подчиненных - справлюсь.

> Ega23 ©   (01.09.05 15:37) [4]

> Учти, это не стандарт. Точнее, это стандарт в рамках нашей группы разработчиков.
> По всему остальному точно также пишется.

Я понял. Спасибо.


 
Sergey13 ©   (2005-09-01 16:17) [7]

2[6] AndrewK   (01.09.05 16:14)
> Начальником я стал буквально на днях
Поздравляю!!!

>Сейчас хочу все наладить....
Ну тогда...
"Правильной дорогой идете, товарищи."
(с)
8-)


 
Fay ©   (2005-09-01 20:52) [8]

2 AndrewK   (01.09.05 16:14) [6]
Вы не очень-то последовательны 8)
Хотите навязать чужое видение? Или обсудить, но не договариваться?
Хрень какая-то.

>> Договариваться о чем?
>> Поэтому и делаю попытку все описать, потом обсудить с коллективом

>> киньте какой-нибудь пример стандарта на разработку
>> Вот этот прототип я сейчас и делаю.
>> И цель не навязать всем свое видение как надо писать


 
AndrewK   (2005-09-02 13:08) [9]

>Fay ©   (01.09.05 20:52) [8]
>Вы не очень-то последовательны 8)
>Хотите навязать чужое видение? Или обсудить, но не договариваться?

Что-то я не заметил особой непоследовательности. Есть неточные высказывания, но так я и вопрос про другое задавал. На будущее учту и постараюсь высказываться точнее.

>> Договариваться о чем?
>> Поэтому и делаю попытку все описать, потом обсудить с коллективом

А как иначе? Обсуждать всегда лучше то, что уже готовое. Тогда и быстрее получается и лучше. Тем более в вопросах стандартизации. А иначе начинаются войны вкусов, кто привык for с большой буквы писать, кому-то пробелы не нравяться, кто-то оператор try finally end не переваривает. А так есть документ, который выставляется на обсуждение. По нему принимаются конструктивные предложения или замечания. Вопросы вкусов отсекаются директивно. Получается нормальный рабочий документ. Дальше только контроль.

>> киньте какой-нибудь пример стандарта на разработку

Всегда хорошо посмотреть на чужой опыт. Ведь есть люди гораздо более опытные чем мы. А учиться еще дедушка Ленин завещал.

>> Вот этот прототип я сейчас и делаю.

Прототип стандарта, который я делаю включает в себя не только правила оформления объектов базы данных, но и стандарт оформления кода, стандарт оформления директорий проектов, правил и рекомендаций по разработке отдельных блоков, стандарт оформления пользовательских интерфейсов и еще много чего.

>> И цель не навязать всем свое видение как надо писать

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

Надеюсь, я более или менее нормально объяснил на этот раз.


 
Fay ©   (2005-09-02 16:06) [10]

2 AndrewK   (02.09.05 13:08) [9]
Я бы выбрал (собственно, так и сделал) эволюционный подход.
А записывать результаты переговоров стоит только в случае изменения состава команды.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.039 c
3-1125486181
intaari
2005-08-31 15:03
2005.10.16
данные в DBGrid как в cross-tab отчета


6-1119417372
Progh
2005-06-22 09:16
2005.10.16
Как получить список всех IP адресов локальной сети


3-1125482468
Layner
2005-08-31 14:01
2005.10.16
Инсталляция серверной части ПО на MSSQL 2000


14-1127380649
__DATA__
2005-09-22 13:17
2005.10.16
Поиск наиближнего времени к текущему из списка


6-1119994627
wp2
2005-06-29 01:37
2005.10.16
Реципиент (RCPT) не тот?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский