Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Флейм
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.04.2014, 09:23
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию Delphi code convensions

Коллеги, в недавнем прошлом я озаботился вопросом создания правил оформления Delphi кода, которым я мог бы неукоснительно следовать в своем проекте. В принципе, можно взять готовые от Embarcadero: http://edn.embarcadero.com/article/10280#2.2

Но хочется иметь на руках осмысленный набор правил. А для этого их хорошо бы обсудить, а где обсуждать, как не на форуме?

Предлагаю начать. Сначала Borland, а теперь и Embarcadero, предлагает в начале каждого файла писать копирайт-блок вида:
Код:
{*******************************************************}
{                                                       }
{       Borland Delphi Visual Component Library         }
{                                                       }
{       Copyright (c) 1995,98 Inprise Corporation       }
{                                                       }
{*******************************************************}
Все хорошо, но:
1) Зачем писать название проекта, если оно и так ясно из проджект груп?
2) Зачем писать копирайт, файл скорее всего, принадлежит компании/либо может быть ей использован?

Другими словами зачем вообще этот блок?
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров
Ответить с цитированием
  #2  
Старый 29.04.2014, 09:27
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цопирайт — права на распространение, лучше писать, что авторство принадлежит конкретно тебе.

Код:
{ потрачено.pas авторы: сидоджи, сладенький и большой дым }

Тут скорее всего рассчитано на то, что кто-нить скачает, не сможет разобраться (ну или вопросы возникнут), он сможет с тобой связаться
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 29.04.2014 в 09:32.
Ответить с цитированием
  #3  
Старый 29.04.2014, 23:04
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

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

Выполнение этой нехитрой процедуры для кода и делается предлагаемой шапкой.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #4  
Старый 30.04.2014, 11:39
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию

Цитата:
Сообщение от Freeman
В свое время озадачивался аналогичным вопросом. В авторском праве есть понятие произведения и публикации. Когда код является произведением (то есть несет некую общественно полезную функцию), об этом нужно объявить и заодно указать, кто автор данного произведения. А годы, указываемые в копирайтах -- годы публикации произведения.

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

Тут вижу как минимум следующие проблемы:
1) Как быть с опенсорсной разработкой - ведении проекта где-нибудь на GitHub? Получается, что модуль выложен в открытый доступ(опубликован), практически сразу после создания в еще "сыром" виде.
2) Получится, что неопубликованные модули не соответствуют рекомендованному стандарту - это же нехорошо
3) Непонятно какую функцию несет копирайт. Ну разместили мы информацию о нем в модуле. Фактически, ничто не мешает кому-нибудь взять ваш модуль, изменить в нем блок копирайта и зарегистрировать как свой код - если вы не успели зарегистрировать свой. Другими словами, этот блок никого ни к чему не обязывает, а лишь информирует. Зачем нам эта информация в модулях - вот в чем вопрос.

Лично мне больше нравится версия madman. Этот блок позволяет определить происхождение данного модуля. В итоге, можно обратится к разработчику за разъяснениями\более новыми версиями.

В таком контексте использование копирайта мне кажется логичным.

Кстати, коллеги, а кто-нибудь вообще пишет этот блок?
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров

Последний раз редактировалось madMonia, 30.04.2014 в 11:42.
Ответить с цитированием
  #5  
Старый 30.04.2014, 12:14
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Если что-то универсальное делаю, то пишу пояснение, что это и зачем.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #6  
Старый 30.04.2014, 12:53
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию стандарт Jedi

Нашел еще в интернете стандрат, используемый командой джедаев.

Копирайт у них выглядит так:
Код:
{******************************************************************************}
{                                                                              }
{ Project JEDI Code Library (JCL)                                              }
{                                                                              }
{ The contents of this file are subject to the Mozilla Public License Version  }
{ 1.0 (the "License"); you may not use this file except in compliance with the }
{ License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ }
{                                                                              }
{ Software distributed under the License is distributed on an "AS IS" basis,   }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License.    }
{                                                                              }
{ The Original Code is JclGraphics.pas.                                        }
{                                                                              }
{ The Initial Developer of the Original Code is documented in the accompanying }
{ help file JCL.chm. Portions created by these individuals are Copyright (C)   }
{ 2000 of these individuals.                                                   }
{                                                                              }
{ Contains various graphics related classes and subroutines such as a Win32    }
{ regions encapsulatiion, a very fast TBitmap replacement and various          }
{ transformation and filtering routines.                                       }
{                                                                              }
{ Unit owner:    Wim de Cleen                                                  }
{ Last modified: June 7, 2000                                                  }
{                                                                              }
{******************************************************************************}

Как мы видим инфа следующая:
1) Название проекта
2) Более менее подробное описание лицензии
3) Краткое описание цели модуля
4) Владелец модуля
5) Дата последней модификации модуля

На мой взгляд:
1) Название проекта имеет смысл, если речь идет о названии исходного проекта откуда модуль взят. Тоесть, при использовании чужих модулей без переработки следуюет оставить информацию откуда модуль был взят
2) Описание лицензии - чушь. Хватит название проекта, дальше нагуглить инфу (или централизованно хранить для всех модулей этого проетка) вполне можно. Максимум можно краткую инфу - не более одной строки.
3) Краткое описание цели модуля - дело полезное
4) Владелец модуля - чушь. Может у JEDI и есть четко закрепленный владелец для каждого модуля, но в реальных условиях такого может и не быть. Вся необходимая информация должна содержаться в VCS.
5) Дата изменения - еще большая чушь, бессмысленное дублирование инфы.

Ваше мнение коллеги?
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров
Ответить с цитированием
  #7  
Старый 30.04.2014, 13:04
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от madMonia
5) Дата изменения - еще большая чушь, бессмысленное дублирование инфы.
А если я не из ЦВС достал модуль (например мне кто-нибудь скопировал его на флешку, или я с сайта скачал в архиве (например 7z, который всякую ботву игнорит)), то как быть?

По поводу овнера вопрос тоже спорный, допустим произошла ситуация, как в абзаце выше, я по фамилии могу найти чувака и его лично спросить.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 30.04.2014 в 13:07.
Ответить с цитированием
  #8  
Старый 30.04.2014, 17:56
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от madMonia
Другими словами, блок копирайта предлагается указывать, только в случае выкладывания модуля в общественный доступ? А в случае написания кода внутри некой организации блок копирайта не нужен?
Нужно задумываться о будущем. Доступ ведь необязательно может быть общественным, вполне может иметь место и закрытое предоставление кода под подписку о неразглашении доверенным партнерам.

Цитата:
Сообщение от madMonia
1) Как быть с опенсорсной разработкой - ведении проекта где-нибудь на GitHub? Получается, что модуль выложен в открытый доступ(опубликован), практически сразу после создания в еще "сыром" виде.
Да, на то и открытые исходники. В этом случае датой публикации считается дата выкладывания в публичный доступ. Понятие произведения в авторском праве не делает различий между законченным и незаконченным произведением. С точки зрения охраны они равноценны. Скажем, этюды художников или черновики писателей тоже могут иметь ценность.

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

Цитата:
Сообщение от madMonia
3) Непонятно какую функцию несет копирайт. Ну разместили мы информацию о нем в модуле. Фактически, ничто не мешает кому-нибудь взять ваш модуль, изменить в нем блок копирайта и зарегистрировать как свой код - если вы не успели зарегистрировать свой. Другими словами, этот блок никого ни к чему не обязывает, а лишь информирует. Зачем нам эта информация в модулях - вот в чем вопрос.
Сам по себе копирайт никакой полезной функции не несет, он исходит из критериев добросовестного использования и неявно его подразумевает. Теоретически ничто не запрещает зарегистрировать чужой код, особенно если автор -- не известный человек. Тем не менее, эта процедура как минимум не бесплатна, что и является сдерживающим фактором в большинстве случаев.

Любители писать слово "свобода" даже на заборах вставляют свою молитву и в блок авторских прав. Здравомыслящие же люди исходят из того, что код, выложенный в открытый доступ, самим фактом выкладывания подразумевает открытость и не парятся по поводу лицензий, выбирая что-то простое из двух-трех пунктов.

Цитата:
Сообщение от M.A.D.M.A.N.
А если я не из ЦВС достал модуль (например мне кто-нибудь скопировал его на флешку, или я с сайта скачал в архиве (например 7z, который всякую ботву игнорит)), то как быть?
Дата изменения и ревизия -- те штуки, которые разрешаются автоматически, всякими $Date и $Revision в том же SVN, например.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #9  
Старый 02.05.2014, 01:07
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Я делаю так:
1. Для опен-сорс проектов - подписываюсь, проставляю год написания, пишу под какой лицензией код.
2. Для проектов, которые вряд ли когда-либо покинут пределы моего компа, но вероятность возможна - просто пишу в шапке адрес своего сайта и краткое описание "а о чём это я".
3. Для проектов внутри компании, в которой я работаю - следуем указаниям тимлида по оформлению кода
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #10  
Старый 03.05.2014, 18:28
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию

Цитата:
Сообщение от PhoeniX
Я делаю так:
3. Для проектов внутри компании, в которой я работаю - следуем указаниям тимлида по оформлению кода

А если тимлид - это ты?
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter