У меня есть три вида в моей программе (приложение для iOS). Только один из них когда-либо активен одновременно, поэтому я отключаю видимость для двух из них и переключаю видимость, когда пользователь нажимает кнопки. Представления инициализируются как видимые, поэтому я отключил видимость в коде, прежде чем показывается основной вид.
я могу сделать
[view1 setAlpha:0.0f];
[view2 setAlpha:0.0f];
для двух представлений, но теперь третий (тот, который должен быть виден в начале приложения) не рассматривается. Я положил
[view3 setAlpha:1.0f];
после первых двух, потому что я думаю, что это ясно показывает, что на самом деле есть три представления, а не два, как можно подумать при просмотре кода. Как другие программисты делают это? Это чисто предпочтения или есть какие-то соглашения?
Если вызов очень тяжелый, очевидно, что лучше не звонить, когда в этом нет необходимости, но я удивлялся мелочам, таким как мой пример.
источник
setVisibility
ничего не делать, если видимость уже запрошена, что снижает ответственность.Альтернативная идея: если ваша цель состоит в том, чтобы предотвратить возникновение ошибок, потому что люди забывают, что есть три представления, и делают что-то только с двумя из них, что им действительно следует делать со всеми из них, тогда сделайте функцию, которая сделает невозможным забывание:
Теперь у вас есть нечто гораздо более мощное - время компиляции гарантирует, что вы не забыли . Если вы забудете параметр, компилятор будет кричать на вас. Это гораздо полезнее, чем комментарии или ненужный код, так как создает строгий именованный протокол, который обеспечивает соблюдение свойства, о котором вы заботитесь.
В случае, когда
view3
не нужно менять видимость, вы можете добавить некоторое поведение, когда передача специального значения, такого как-1.0
или,nil
или что-то подобное, означает «вообще не изменяйте видимость представления». Это обходит проблему установки видимости без необходимости.источник
Я считаю, что лучше всего добавить комментарий, объясняющий, что вызов не нужен (и почему).
(возможно, тот факт, что вызов не нужен, или что вам нужен комментарий об этом, может быть запахом кода)
источник
В этом конкретном случае @Mattieu M. имеет правильное решение.
В более общем случае, когда нет подобного преобразования, вы должны спросить себя: есть ли шанс, что будущий программист может испортить это?
Ответ обычно да. Что означает, да, вы должны добавить вызов. Может быть, какая-то будущая версия фреймворка начинается с выключения всех представлений вместо включения.
источник