|
|
|
Сократить код
|
|||
|---|---|---|---|
|
#18+
wsnet Всем привет, может кто-нибудь знает можно ли как-то сократить такие макароны: Да запросто. Адекватно расставить свойство Align, а эту хрень просто выкинуть. booby сорри, в синтаксисе delphi не силен, но, может быть, что-то в таком стиле: Зачем? Выгоды-то никакой. YuRock Очень наглядно и понятно: Как тебе сказать... тот, кому это непонятно, программистом не является. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2021, 01:09 |
|
||
|
Сократить код
|
|||
|---|---|---|---|
|
#18+
swame2 wsnet, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но это для этого конкретного случая, для других может быть что-то другое (дополнительная параметризация). Для Right пишется хелпер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2021, 01:21 |
|
||
|
Сократить код
|
|||
|---|---|---|---|
|
#18+
softwarer YuRock Очень наглядно и понятно: Как тебе сказать... тот, кому это непонятно, программистом не является. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2021, 01:24 |
|
||
|
Сократить код
|
|||
|---|---|---|---|
|
#18+
YuRock Ваше мнение очень важно для нас. Это, конечно, правильно, но это даже не мнение. Программистов в самом начале пути учат булёвой алгебре, битовым операциям и ряду других полезных навыков. Для программистов это примерно то же самое, что для математиков - таблица умножения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2021, 01:29 |
|
||
|
Сократить код
|
|||
|---|---|---|---|
|
#18+
softwarer, Главное что бы потом не выяснилось что где то True/False это 1/0 а где-то -1/0 или, допустим, -1/1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2021, 01:45 |
|
||
|
Сократить код
|
|||
|---|---|---|---|
|
#18+
rgreat softwarer, Главное что бы потом не выяснилось что где то True/False это 1/0 а где-то -1/0 или, допустим, -1/1. Дело в том, что мудрейший софтварер решил поумничать и поспорить ради спора, утверждая на этот раз, что вместо очевидных условий лучше использовать вычисление, а потом - те же условия, только уже на результат этого вычисления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2021, 01:52 |
|
||
|
Сократить код
|
|||
|---|---|---|---|
|
#18+
softwarer ... booby сорри, в синтаксисе delphi не силен, но, может быть, что-то в таком стиле: Зачем? Выгоды-то никакой. ... В триаде "пользователь"-"компьютер"-"другой программист" я - другой программист. Для меня именно эта форма минимизирует шанс при первом чтении неверной интерпретации кода в целом или пропуска важной детали. Само выражение вычисляющее вариант - случайно, а форма дает возможность однозначно связать в единое целое происходящее дальше с происходящим ранее. Для меня это вопрос о потере времени на понимание, вероятности пропуска деталей, приводящих к ошибке в модификации существующего кода. Сколько раз надо пройти по исходному коду глазом сверху вниз и наоборот, просто для того, чтобы сформулировать правдоподобную гипотезу о смысле происходящего, и сколько раз в варианте с вычислимым case statement (для меня ответ очевиден). И сколько еще раз к этому надо добавить, чтобы убедить себя в том, что ты не ошибся точности интерпретации и не упустил детали... В момент первичного понимания сорта "что здесь происходит", проблемы пользователя или компьютера - есть ли для них смысл в коде такого вида, для меня не существуют. DHDD как раз провел хорошую работу, обнажая существо дела. Я лишь предложил другую форму записи, которая с моей точки зрения, позволяет надежно облегчить чтение и сократить время доведения себя до состояния уверенности в общем понимании смысла изучаемого фрагмента. Конечно, я исхожу из того, что "программирую, как все", и то, что удобно для меня, автоматически удобно и для всех других программистов . Поскольку суждение субъективное, оно имеет право произвольным образом не совпадать с чьим-то другим субъективным мнением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2021, 02:31 |
|
||
|
Сократить код
|
|||
|---|---|---|---|
|
#18+
rgreat Главное что бы потом не выяснилось что где то True/False это 1/0 а где-то -1/0 или, допустим, -1/1. При желании подстраховаться от этого можно использовать Ord() вместо приведения типа, суть от этого не меняется. Но ведь это же не Си, где об этом приходилось думать. То, что не меняется как минимум с 1986-го года, по мне, достаточно надёжно :) YuRock утверждая на этот раз, что вместо очевидных условий лучше использовать вычисление И вот пошло обычное враньё. booby Для меня именно эта форма минимизирует шанс при первом чтении неверной интерпретации кода в целом или пропуска важной детали. А зря. Это уже похоже на бюрократа, которому предложение на канцелярите ближе и роднее прямой речи. К тому же, подход плохо масштабируем. Представьте себе, что полей не три, а восемь, и прикиньте, во что выльется в таком случае вариант DHDD, а во что - Ваш. booby Я лишь предложил другую форму записи, которая с моей точки зрения, позволяет надежно облегчить чтение и сократить время доведения себя до состояния уверенности в общем понимании смысла изучаемого фрагмента. Конечно, "лёгкость чтения" - понятие не очень формализуемое, но всё же отмечу, что суть Вашего подхода - скомбинировать несколько объектов в один битовый вектор только ради того, чтобы по его результату снова выбрать единственный объект. Это не очень похоже на наиболее очевидный и понятный путь, назовём так. В то же время единственное, чего не хватает коду DHDD для оптимальности чтения - это комментария над if-ом "Выберем самый правый из видимых edit-ов". P.S. На всякий случай отмечу, что в предложенных решениях присутствует один общий недостаток - они не учитывают, что такой фрагмент не единственный. Природа задачи, где перед полем ещё минимум два возможно видимых edit-а, подразумевает, что их тоже надо выравнивать. Как я уже сказал выше, оптимально это сделать без кода, дизайновыми средствами. Я, например, использую для этого свои компоненты layot-а. Но если делать это кодом, то оптимально будет примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2021, 10:27 |
|
||
|
Сократить код
|
|||
|---|---|---|---|
|
#18+
softwarer ... суть Вашего подхода - скомбинировать несколько объектов в один битовый вектор только ради того, чтобы по его результату снова выбрать единственный объект. Вовсе нет. Именно комбинация в битовый вектор здесь почти случайность, выбранная только для немедленной совместимости с предыдущей версией кода без внесения в него дополнительных предположений об устройстве интерфейса или внесения изменений в иные части программы. softwarer В то же время единственное, чего не хватает коду DHDD для оптимальности чтения - это комментария над if-ом "Выберем самый правый из видимых edit-ов". В данном случае, имхо, это, вероятно, ошибочное чтение. Я бы историю читал так: выбирается не самый правый из отображенных, а тот из трех отображаемых в одном и том же месте, который отображен сейчас, при условии, что два оставшихся скрыты. И по отношению к этому единственному отображенному происходит выравнивание следующего в том же визуальном ряду. Вот как я вижу эту историю: исходная версия кода, предложенная в топике в одном ифе содержала две задачи - вычисление текущего отображенного из заменяемых и выравнивание целевого контрола. Главное , что сделал DHDD - разделил их на независимые фрагменты, годные к немедленному превращению в цепочку параметризованных функций. Смысл предложенного мной улучшайзинга для фрагмента выбора опорного контрола состоит в переходе на шаге выбора отображенного контрола от прямого опроса свойств объектов формы для выявления текущего состояния к работе с явно задекларированным абстрактным состоянием компонента. И прямая битовая комбинация, образованная в моем посте лишь шаг, позволяющий привести конкретный фрагмент кода к виду, лучше соответствующему этой идее без внесения немедленных глобальных изменений в проект. Это часть возможной постепенной миграций от замусоривания кода прямыми опросами свойств контролов к работе с абстрактными состояниями абстрактных автоматов. Утилитарный код при этом, со временем, целиком избавляется вообще от каких-либо ифов и делает свою простую или циклическую работу. softwarer ...такой фрагмент не единственный. Природа задачи, где перед полем ещё минимум два возможно видимых edit-а, подразумевает, что их тоже надо выравнивать. Вот именно - природа задачи . И тот, кто формирует список таких котролов, чтобы потом натравить на него простой цикл выравнивания (не содержащий ифов), вполне может ориентироваться прямо на текущий код состояния автомата визуального состояния. Форма case statement отлично обслужит и эту потребность. И дело не в том, что case "вообще лучше", чем if, а, имхо, в том, что case отшелушивает конкретику мозговыносящих комбинаций конкретной версии визуального интерфейса, оставляя при этом возможность дальнейшего абстрагирования и замены себя впоследствии на "более подходящий объект" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2021, 12:52 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40049294&tid=2037575]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 510ms |

| 0 / 0 |
