Mam trzy widoki w moim programie (aplikacja na iOS). Tylko jeden z nich jest zawsze aktywny w tym samym czasie, więc dla dwóch z nich wyłączam widoczność i zmieniam widoczność, gdy użytkownik naciska przyciski. Widoki są inicjowane jako widoczne, więc wyłączam widoczność w kodzie, zanim wyświetli się widok główny.
potrafię
[view1 setAlpha:0.0f];
[view2 setAlpha:0.0f];
dla dwóch widoków, ale teraz trzeci (ten, który powinien być widoczny na początku aplikacji) nie jest adresowany. Kładę
[view3 setAlpha:1.0f];
po pierwszych dwóch, ponieważ myślę, że jasne jest, że w rzeczywistości istnieją trzy widoki, a nie dwa, jak mogłoby się wydawać, widząc kod. Jak robią to inni programiści? Czy to czysta preferencja, czy są jakieś konwencje?
Jeśli połączenie jest bardzo ciężkie, oczywiście lepiej nie dzwonić, gdy nie jest to konieczne, ale zastanawiałem się nad małymi rzeczami, takimi jak mój przykład.
źródło
setVisibility
nie robienie niczego, jeśli widoczność jest już wymagana, co obniża odpowiedzialność.Alternatywny pomysł: jeśli Twoim celem jest zapobieganie występowaniu błędów, ponieważ ludzie zapominają o trzech widokach i robią coś z tylko dwoma z nich, co naprawdę powinni zrobić ze wszystkimi, a następnie włącz funkcję, która uniemożliwia zapomnienie:
Teraz masz coś znacznie potężniejszego - czas kompilacji gwarantuje, że nie zapomniałeś . Jeśli zapomnisz parametru, kompilator będzie na ciebie krzyczał. Jest to o wiele bardziej przydatne niż komentarze lub niepotrzebny kod, ponieważ tworzy ściśle nazwany protokół, który wymusza właściwość, na której Ci zależy.
Dla przypadku, gdy
view3
nie wymaga to widoczność zmianie, można dodać trochę zachowanie gdzie przechodząc szczególną wartość jak-1.0
lubnil
czy coś w tym kierunku oznacza „nie zmieniaj widoczności widok na wszystko”. To omija problem niepotrzebnego ustawiania widoczności.źródło
Uważam, że najlepiej jest dodać komentarz wyjaśniający, że połączenie nie jest potrzebne (i dlaczego).
(być może fakt, że połączenie nie jest potrzebne lub potrzebujesz komentarza, może być zapachem kodu)
źródło
W tym konkretnym przypadku @Mattieu M. ma właściwe rozwiązanie.
W bardziej ogólnym przypadku, gdzie nie ma podobnych przekształcać, trzeba zadać sobie pytanie: Czy istnieje jakikolwiek szansa przyszła bałagan to programista moc w górę?
Odpowiedź jest zwykle tak. Co oznacza, że tak, powinieneś dodać połączenie. Być może niektóre przyszłe wersje frameworku zaczynają się od WYŁĄCZENIA wszystkich widoków zamiast WŁĄCZENIA.
źródło