|
|
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Всем привет, возник вопрос по классах, возможно покажется глупым и дурацким, не ругайте громко. Допустим есть класс. Код: pascal 1. есть поля класса Код: pascal 1. 2. 3. 4. 5. Есть проперти Код: pascal 1. 2. 3. 4. 5. Есть различные методы класса. В случае если где то необходимо использовать один из методов при етом метод использует не все поля класса , как правильно поступать, использовать конструктор по умолчанию user.create() а потом сетать значения необходимым полям user.id:=1; , user.login='login'; или создавать несколько конструкторов используя Overload? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2019, 15:30 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
SashauaВ случае если где то необходимо использовать один из методов при етом метод использует не все поля класса , как правильно поступать, использовать конструктор по умолчанию user.create() а потом сетать значения необходимым полям user.id:=1; , user.login='login'; или создавать несколько конструкторов используя Overload? Без разницы. Обычно делаю один супер-метод, который покрывает все необходимые поля, а потом прикручиваю к нему через overload со значениями по умолчанию, если не получается обойтись с помощью default (например, порядок/тип переменных неоднозначный). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2019, 15:33 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Sashaua...или... Пофиг. Это ж не капитальное строительство высотного здания, практически все и всегда переделать можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2019, 16:01 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Открой для себя рефакторинг, почитай по нему книжки. И делай как проще. А потом по мере вырисовывания/развития/изменения архитектуры будешь рефакторить. А там видно будет, что в итоге лучше применить на конкретном этапе развития продукта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2019, 02:25 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Вопрос нормальный, архитектурный. В целом, это дело вкуса, хотя: - больше 3-4 параметров в подпрограмме - не гут (рекомендация) - куча перегруженных конструкторов может запутать, да и не всегда на все сочетания можно наклепать вариантов - если поле допускает дефолтное значение, то логично сделать его свойством. С другой стороны, если значение должно присваиваться строго при создании, то либо конструктор, либо отдельный метод типа Init. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2019, 09:58 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Если делаешь для себя или для внутреннего ограниченного использования, то можешь делать как угодно. Потом поправите, если что. Если код на сторону или на продажу, желательно, что бы он имел стабильное API. И лучше заранее максимально хорошо продумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2019, 11:32 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Sashaua... В случае если где то необходимо использовать один из методов при етом метод использует не все поля класса , как правильно поступать, использовать конструктор по умолчанию user.create() а потом сетать значения необходимым полям user.id:=1; , user.login='login'; или создавать несколько конструкторов используя Overload? Да, как уже сказали тут дело вкуса. На мой вкус лучше в Create передавать минимальный обязательный набор свойств, обычно те, которые не могут меняться. Когда много параметров и особенно с overload легко запутаться. Возможны несчастные случаи когда в зависимости от типа входного параметра может поменяться логика работы, например Integer можно без проблем передавать в Double, но при наличии нескольких overload может поменяться вызываемый метод и смысл передаваемого значения. Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2019, 13:31 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
roschinspb, Вот ещё гадать на кофейной гуще. Гораздо проще надо. А ля как ты говоришь в Create передавать минимальный обязательный набор свойств. После вызвать Init... религии не запрещают. imho буде лучше, чем CreateById и CreateByPrice ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2019, 14:00 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Gatorroschinspb, Вот ещё гадать на кофейной гуще. Гораздо проще надо... Собственно, пример на это толсто намекает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2019, 16:38 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Подскажите еще ответ на такой дурацкий вопрос, с всего прочитанного в нете несевсем для меня понятно. Если есть метод которому на вход надо передать параметр . get_users (id_user); как правильно делать. 1. можна сразу в метод передавать парамерт Код: pascal 1. 2. 3. 4. 2. или Код: pascal 1. 2. 3. 4. 5. А уже в реализации метода get_users id_user брать из поля класса, значение которого я передал перед вызовом метода? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2019, 14:57 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
SashauaА уже в реализации метода get_users id_user брать из поля класса, значение которого я передал перед вызовом метода? Зависит от... Например, если ожидается более одного вызова, то можно и второй способ использовать. А так особой роли не играет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2019, 15:06 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
совершенно похеру. ты сам творец. тебе решать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2019, 15:06 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
wadmanНапример, если ожидается более одного вызова Имею в виду: если ожидается более одного вызова метода или методов, которым понадобится единожды установленный параметр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2019, 15:08 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Параметры - это дополнительная информация для метода, которую он не знает. Если 1 - это параметр id_user, то передавать его не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2019, 15:50 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийсовершенно похеру. ты сам творец. тебе решать. Обычно, "творцы" которым "похеру", не приложения пишут, а выгребные ямы наполняют. Лучше все-таки исходить из того, что проект будут сопровождать и развивать в будущем, возможно даже что не вы. Поэтому стоит с самого начала использовать стандартные подходы и наименования. Например: префиксы Get и Set прочно ассоциируются с геттерами и сеттерами. Первые возвращают значения, вторые принимают. Если наоборот, то это вызывает когнитивный диссонанс... Я бы сделал так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 17:45 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
roschinspb, Именно! Иначе - голимые извраты, писанные извращенцами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2019, 19:58 |
|
||
|
Еще раз о Классах Delphi
|
|||
|---|---|---|---|
|
#18+
10.02.2019 17:45, roschinspb пишет: > Лучше все-таки исходить из того, что проект будут сопровождать и развивать в будущем, возможно даже что не вы. > Поэтому стоит с самого начала использовать стандартные подходы и наименования. Например: > префиксы Get и Set прочно ассоциируются с геттерами и сеттерами. Первые возвращают значения, вторые принимают. > Я бы сделал так: не чейтатетель. но советователь. ога. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2019, 14:45 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39770243&tid=2039825]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
278ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 598ms |

| 0 / 0 |
