Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.032 c
1-1127381397
_Sergey_K
2005-09-22 13:29
2005.10.16
Фильтрация таблицы


3-1125579072
Андрей Жук
2005-09-01 16:51
2005.10.16
Индексы по выражениям в Firebird


2-1125789112
Пантелеев Иван
2005-09-04 03:11
2005.10.16
Подсчёт выбраных записей


3-1125468808
Programmer Andrey
2005-08-31 10:13
2005.10.16
Доступ к базе Paradox


11-1108035269
WhiteGuy
2005-02-10 14:34
2005.10.16
Немножко в KOLLISTBOX ;)