![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
Еще одно напуствие, в дельфи жми Ctrl+D почаще, а то код у тебя отформатирован не по правилам, которую рекомендует эмбаркадеро. Мне из-за этого лень стало в коде разбираться.
Рекомендую сюда глянуть: http://wiki.delphi-jedi.org/index.php?title=Style_Guide |
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
mxustin (13.10.2015)
| ||
|
#17
|
|||
|
|||
|
Спасибо! Это для меня важно. Так как я совсем не опытен в таких делах, как «дизайн кода», архитектура, разбиение на модули, и все такое. Это — мой первый проект. Старался пока что добиться хотя бы того, чтобы код был просто единообразно отформатирован. Подобный документ, как Вы дали по ссылке — видел даже где-то на русском языке. Буду стараться придерживаться правил.
Upd.: Ваша ссылка — уже в закладках! Последний раз редактировалось mxustin, 13.10.2015 в 20:33. |
|
#18
|
|||
|
|||
|
Хочу еще раз поблагодарить за ссылку, и за то, что Вы указали на несовершенство дизайна кода! Это для меня важнее, чем обсуждение самой идеи или способов извлечения энтропии. Идея — она «идея как идея» без каких-либо претензий на исключительность. Важнее всего для меня было попытаться сделать что-то, что можно было бы считать проектом. То есть, такое:
• можно дать кому-то еще (переносимость, хотя бы потенциальная полезность для кого-то еще, кроме меня); • есть описание, есть документация; • проект хотя бы сколько-нибудь прилично написан и оформлен. После Ваших слов понимаю, что с задачей справился слабенько. И, вообще, чем больше углубляюсь в тему того, чтобы вообще кому-то что-то можно было отдать, тем больше понимаю, что это сложно. Это требует большого труда. Но мне интересно этим заниматься, и я надеюсь, что постепенно буду совершенствоваться. Код следующей своей разработки я уже буду писать с применением рекомендаций, ссылку на которые Вы дали. А не могли бы еще Вы сказать хоть пару слов о документации: http://documentation.pbrng.16mb.com/ Подозреваю, что она тоже далека от совершенства. На что обратить внимание? |
|
#19
|
||||
|
||||
|
А вы еще показали бы уникальное применение своего генератора? Сейчас для меня это просто очередная Incredible Machine. Никак не соображу, чем так не устраивает стандартный генератор, что потребовалось создавать свой?
|
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
mxustin (13.10.2015)
| ||
|
#20
|
|||
|
|||
для меня — это как «лаба» по программированию. Стараюсь опыта набраться. Это могло бы быть все, что угодно. «Случайным образом выпало», что это будет генератор случайных чисел. По поводу стандартного генератора — все устраивает, хотелось, так сказать, «замахнуться на Уильяма нашего...». Орешек оказался твердоват (или зубки слабы пока). Но +1 к опыту я точно получил.Цитата:
Уникальное применение, наверное, я вряд ли придумаю. Следующее, что попытаюсь «разгрызть» — будет генератор паролей (на моем генераторе СЧ). P.S. Так уж получилось, что я в не-студенческие годы решаю студенческие задачки, но... это — ****, жизнь. Сложилось так, что мне нужно переквалифицироваться. (Раньше занимался другим, теперь подумываю переквалифицироваться в программиста.) Последний раз редактировалось mxustin, 13.10.2015 в 23:09. |
|
#21
|
||||
|
||||
|
Цитата:
![]() По документации: 1) Почему лицензия в "заключении"? Обычно с неё начинают, или же выводят отдельным пунктом. ![]() 2) Фактически, вся документация состоит из "введения" и (автогенерированных?) шаблонных описаний функций. Автодоки - это хорошо и полезно, но все же наличие описания самой системы все равно нужно иметь. Хотя бы информацию о том, как его запустить и сконфигурировать "с нуля". Представь, что сам первый раз в жизни видишь этот генератор. Вот ничего ты не знаешь про него. Не знаешь даже, какие буквы писать в делфи. И тебе надо на основе этого генератора что-то сделать. Варианты "интуитивно понятно" и "ну почитать описание существующих функций модулей" сразу отбросить, если хочется нормальную документацию. Конечно, многие проекты документированы либо никак, либо просто описанием функций, но наличие хотя бы текстового описания "надо инициализировать и и запустить генератор" полезно. Можно уже отталкиваться: "ага, инициализировать - значит ищем функцию инициализации; запустить - ищем в доках, как запускать". 3) Я чего-то не понял - во введении указаны только две функции, а в доках их о-го-го. Если программисту предполагается использовать только две, то почему они растворены в описании кучи внутренних функций, если их использование при подключении модуля не предполагается? А если предполагается, то вообще ничего не понятно. |
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
mxustin (14.10.2015)
| ||
|
#22
|
|||
|
|||
|
Принято. Спасибо. Работаю над улучшениями. (Они, правда, будут касаться уже следующей версии: я переделал свою разработку в компонент VCL.)
Насчет лицензии — ок. Понял. Буду иметь ввиду. По поводу функций — то да, для пользователя их две (остальное — «внутренние функции» и пользователю они не очень нужны). Тут я был в положении буриданова осла. Хотелось, как бы и для себя документацию сделать (чтобы через месяц вспомнить, что там за что отвечает), и для пользователя. Очевидно, что так делать нельзя. Нужно делать две отдельные вещи: руководство пользователя и тех. документацию. Это я уже понял. (Документация, действительно, сгенерирована автоматом. Это Вы правильно поняли.) Цитата:
Спасибо за понимание И за дельные и ценные указания. |
|
#23
|
||||
|
||||
|
Не удобно, что дока раскидана по главам, нажал «скачать pdf», мне только введение и скачало.
Ну и такие проекты лучше не на бесплатный хостинг с пэхэпэ и мускуль выкладывать, а на GitHub (https://github.com/), там тебе и народ пулл-реквестов может накидать, оценить проект и т.д.. Да и самому удобнее, сразу бонусом версионный контроль, история, форки и т.д.. Сам пользуюсь (обычно всякое ненужное туда сваливаю, что удалить жалко, а хранить нет смысла. Ща пока там мало интересного). https://github.com/OswaldMandus |
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
mxustin (14.10.2015)
| ||
|
#24
|
|||
|
|||
|
Цитата:
Ненадо. Это не та вещь, которую надо иметь как компонент. Сделай синглтон. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
mxustin (14.10.2015)
| ||
|
#25
|
|||
|
|||
|
Цитата:
Принято. Насчет pdf - все понял. Похоже, что Git все-таки придется изучить... Попробую. |
|
#26
|
|||
|
|||
|
Цитата:
Если я правильно понял из гугла, то это — определенный паттерн в ООП?.. до такого уровня я еще не дорос. |
|
#27
|
||||
|
||||
|
Цитата:
|
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
mxustin (14.10.2015)
| ||
|
#28
|
|||
|
|||
|
Цитата:
До паттернов, я, наверное, еще когда-нибудь доберусь. Полагаю, что в программировании тяжело будет претендовать на сколько-нибудь профессиональный уровень без знания паттернов. Пока полез регаться на GitHub Терминология новая для меня. Изучаю. ![]() |
|
#29
|
|||
|
|||
|
Цитата:
Ну да. Только надо помнить, что все эти патерны - лишь "научные" названия для вполне себе обычных вещей. Конкретно, синглтон - это объект, который может существовать только в одном экземпляре (в данном случае в контесте одного процесса). Для его реализации тебе так же потребуетя паттерн Фабрика. Имплементация элементарна. Создаешь новый модуль (ну или рефакторишь тот, что у тебя есть ).Делаешь класс, у которого конструктор находится в секции protected. Делаешь в секци Implementation переменную для твоего класса, в initialization присввиваешь ей Nil. Создаешь опубликованную функцию, которая проверяет эту переменную на Nil, если равна, то создает экзепляр, потом возвращает ссылку на эту переменную. Описывать дольше,чем код писать: Код:
unit MyRandom;
interface
type
TMyRandom = class
...
protected
constructor Create; virtual;
public
...
end;
function GetMyRandom : TMyRandom;
implementation
var
MyRandomObj : TMyRandom;
function GetMyRandom : TMyRandom;
begin
if MyRandomObj = Nil Then MyRandomObj := TMyRandom.Create;
Result := MyRandomObj;
end;
initialization
MyRandomObj := Nil;
finalization
If MyRandomObj <> Nil Then MyRandomObj.Free;
end. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
mxustin (14.10.2015)
| ||
|
#30
|
|||
|
|||
|
Ну, примерно понял. На будущее — учту. Компонент мне пока что как-то ближе и понятнее. Он — вот он. Его увидеть можно. В инспекторе объектов можно поля увидеть.
Компонент дает несколько разных возможностей получить случайное число (перегружаемые методы с разным набором входных параметров, а также с разными видами результата: СЧ вещественного типа, СЧ целочисленного типа, а также булев результат True/False с некоторой вероятностью). Я благодарен за эту информацию, но пока мне хотелось бы именно как компонент это оставить. P.S. Кажись, я на Git успешно зарегался, и, вроде бы, залил туда свой модуль (теперь он у меня один) вместе с ресурсами . Лицензию (MIT) мне система на халяву подогнала (ну, в качестве эксперимента для того, чтобы сделать свой первый коммит, я к ней русский вариант добавил). Потом добавил и файлы проекта. https://github.com/mxustin/TPBRNG Щас буду делать описалово (там wiki есть). Мужчины! Спасибо за наводку. Сайтик на бесплатном хостинге я тоже переделывать буду. Буду убирать оттуда весь бред и все лишнее. Потом покажу. ![]() P.S. Кстати, весь код поформатировал через Ctrl+D. И в будущем буду стараться следовать правилам, описанным тут. Последний раз редактировалось mxustin, 14.10.2015 в 21:36. |