Именование форм и юнитов

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

mirk
постоялец
Сообщения: 319
Зарегистрирован: 24.09.2007 10:03:39

Именование форм и юнитов

Сообщение mirk »

Хотел тут причесать код для красоты и назвать форму и ее юнит одним именем (что логично), но получил ошибку.
Кто и как строит именование форм и юнитов в проекте?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Юнит называть - название формы+unit.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Лично я стараюсь так же как в самом Лазаре.
модуль Main
Форма FMain
класс TFMain
mirk
постоялец
Сообщения: 319
Зарегистрирован: 24.09.2007 10:03:39

Сообщение mirk »

Снег Север писал(а):Юнит называть - название формы+unit.

Тогда файл форма создается аналогичный имя_unit.lfm
Странное поведение. Ощущение что разработчики лазаря не задумывались о красоте именования файлов вообще.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

mirk писал(а): Ощущение что разработчики лазаря не задумывались о красоте именования файлов вообще.


Конечно НЕ задумывались. Одинаковые названия взаимосвязанных файлов позволяют легче понять какие из них соотносятся с одной и той же формой. Это позволяет, если надо, манипулировать файлами вне среды. Что-то более сложное обладает и большими накладными расходами.
ev
долгожитель
Сообщения: 1797
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение ev »

я наоборот именую - в начало unit добавляю
так все юниты лежат в каталоге рядом и взглядом легко выцепляются иные файлы
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

ev, это не мысль.... Это идея! (с)
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

У меня всё единообразно.
Все названия с заглавной буквы.
Имя проекта начинается с малой p, пример - pUps.
Все юниты предваряются малой u, пример - uUps.
Все формы предваряются малой f, пример - fUps.
stanilar
постоялец
Сообщения: 289
Зарегистрирован: 09.03.2010 18:09:02

Сообщение stanilar »

ev писал(а): в начало unit добавляю

Обозначения категорий языка программирования (классы, файлы, объекты) имеет смысл всегда добавлять в конец. Тогда визуально в коде все категории, относящиеся к одной и той-же сущности, будут иметь одинаковой название, что улучшает отлов логических ошибок. Например

Код: Выделить всё

unit SampleFormUnit;

class SampleFormClass = class(TForm);
  class function GetInst: SampleFormClass;
end;

var SampleFormVar : SampleFormClass;

class function SampleFormClass.GetInst: SampleFormClass;
begin
  if SampleFormVar = nil then
    SampleFormVar : SampleFormClass.Create;
  result := SampleFormVar;
end;



P.S. С одной сторон в моем коде для классов принято общее правило именования, с другой у меня больше нет проектов под Дельфи.
ev
долгожитель
Сообщения: 1797
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение ev »

stanilar писал(а):Обозначения категорий языка программирования (классы, файлы, объекты) имеет смысл всегда добавлять в конец.

ох уж эти веселые утверждения с приставкой "всегда" :lol:

stanilar писал(а):Тогда визуально в коде все категории, относящиеся к одной и той-же сущности, будут иметь одинаковой название, что улучшает отлов логических ошибок.

это пример только одной логической сортировки, но часто нужны и другие
разным людям удобнее в голове сортировать по разным признакам
тут каждый выбирает сам исходя из своих привычек и возможно задач... но уж никак не "всегда" :wink:
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

mirk писал(а):причесать код для красоты

с кодом можно поступать также как с юнитами. В смысле перед названием ставить условный символ, например: для всех integer название всегда начинается на i и тогда, потом, очень легко ориентироваться в программе.

iNameCount := i; <== здесь вы уже точно знаете с каким типом переменных работает код.
по этому же принципу переименовываются и все контролы.

.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

С незапамятных времен - первым языком программирования у меня был фортран - целым переменным даю имена, начинающиеся на i,j,k,l,m,n.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

stanilar писал(а): Тогда визуально в коде все категории, относящиеся к одной и той-же сущности, будут иметь одинаковой название, что улучшает отлов логических ошибок.


При работе в нормальной IDE это, имхо, не имеет большого значения. К тому же небольшой префикс перед именем легко выполняет эту же роль.
stanilar
постоялец
Сообщения: 289
Зарегистрирован: 09.03.2010 18:09:02

Сообщение stanilar »

Лекс Айрин писал(а): К тому же небольшой префикс перед именем легко выполняет эту же роль.

Нет, он выполняет другую роль. А именно - проверку того, что никто не пытается присвоить переменной с целым типом значение с типом объекта. Вот именно такая проверка в современных иде и не нужна. Особенно в паскале. Т.е. это повторная проверка того, что уже проверено компилятором, и не имеет отношения к логике работы программы.
В моем примере префиксом служит название сущности (SampleForm), что позволяет легче следить за тем, что работа в коде относится к одной сущности, что и является некой проверкой логической целостности.

P.S. Кстати, топик навел меня на мысль, что имеет смысл отказаться от уникальности имен для разных встроенных типов. Типа такого:

Код: Выделить всё

unit SampleForm;

class SampleForm = class(TForm);
  class function GetInst: SampleForm of class;//Таки придется оставить возможность указать тип результата для избежание неочевидности.
end;

var SampleForm : SampleForm of class; // of class нужен на тот случай, если появяться тип рекорд и т.д.

class function SampleForm.GetInst: SampleForm of var;
begin
  if SampleForm of var = nil then
    SampleForm := SampleForm.Create; // тут компилятор и сам может догадаться, что чему присваивается.
  result := SampleForm; //  и тут тоже
end;


Как вам такой концепт?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

stanilar писал(а): Т.е. это повторная проверка того, что уже проверено компилятором, и не имеет отношения к логике работы программы.


Вообще-то это дается скорее для программиста. Не стоит забывать людскую забывчивость.

stanilar писал(а):Как вам такой концепт?


Ужасно. Если уж делать объект и класс одним целым, то как минимум строчку

Код: Выделить всё

SampleForm := SampleForm.Create;

Стоило бы записать так

Код: Выделить всё

SampleForm.Create;

это стоило бы тогда записать без of class

Код: Выделить всё

var SampleForm : SampleForm of class; // of class нужен на тот случай, если появяться тип рекорд и т.д.

Т. к. повторное объявление типа будет ошибкой в одном модуле и легко разрешимым для разных.

А в общем случае... программист запутается быстрее компилятора.
Ответить