Podobnie jak w przypadku innych języków programowania, na początku przygody z Flutterem warto poświecić chwilę na zapoznanie się z obowiązującymi w środowisku developerów konwencjami i praktykami. Zdecydowanie nie należy z tym zwlekać, ponieważ wiedza ta przydaje się nawet na najwcześniejszych etapach nauki. Opisane przez nas poniżej wskazówki i praktyki ułatwią przede wszystkim kwestie odczytywania oraz tworzenia zoptymalizowanego kodu. W jaki sposób nazywa się zmienne, klasy i biblioteki we Flutterze? Dlaczego zamiast używać „var” lepiej doprecyzować typ znanych zmiennych? Jak przy pomocy interpolacji zwiększyć czytelność zapisu dłuższych stringów? Na wszystkie te i wiele innych pytań postaramy się odpowiedzieć w poniższym poradniku.
Flutter dobre praktyki – konwencja nazewnictwa Flutter
Dzięki ujednoliconemu w globalnej skali nazewnictwu programiści są w stanie łatwiej i szybciej zrozumieć, jaką funkcję pełni dany fragment kodu. W języku takim jak Flutter, dobre praktyki nakazują, w jaki sposób zapisać należy nazwy klas, enumów, typedefów, pakietów, plików źródłowych, zmiennych, stałych i parametrów. Nieznajomość lub nieposzanowanie przyjętej konwencji zmniejsza czytelność kodu, co wprowadza niepotrzebne zamieszenia i przyczynia się do powstania większej liczby błędów. Pomimo iż na wczesnym etapie nauki zasady te mogą wydawać się niepotrzebne, to zdecydowanie lepiej od razu wyrobić sobie dobre praktyki. Warto zaznaczyć też, iż odczuwalnie ułatwia to także niezwykle istotną kwestię, jaką jest odczytywanie dokumentacji technicznej. W przypadku klas, enumów, typedefów i nazw rozszerzeń wykorzystuje się zapis UpperCamelCase. Zawsze zaczyna się on od wielkiej litery, którą następnie wykorzystuje się, aby zasygnalizować początek kolejnego słowa w nazwie. Przeznaczona dla nazw zmiennych, stałych i parametrów notacja lowerCamelCase różni się jedynie wielkością pierwszego znaku. Trzecim sposobem zapisu ciągów tekstowych, jaki warto zapamiętać, jest snake_case, który odstępy pomiędzy słowami rozpoczętymi małą literą oddziela przy pomocy zwanego potocznie „podłogą” znaku podkreślania: „_”. Notacja snake_case wykorzystywana jest głównie przy zapisywaniu nazw bibliotek, pakietów, plików źródłowych i katalogów.
Flutter wskazówki – dlaczego wewnątrz klasy warto doprecyzować typ znanych zmiennych?
Na wczesnych etapach nauki Flutter, wskazówki nie bez przyczyny skupiają się wokół nazewnictwa oraz sposobu zapisu kodu. Bardzo często zdarza się, iż początkujący programiści niemalże wszystkie zmienne definiują przy pomocy typu „var”. Przy niezbyt skomplikowanym kodzie zabieg ten ogranicza liczbę błędów związanych z niespójnością typów zmiennych, ale w praktyce przy bardziej złożonych lub komercyjnych projektach nie można tak robić. Jeśli da się określić, jaki typ zmiennej będzie docelowo potrzebny (np. float, double, string itp.), zdecydowanie lepiej go zdefiniować. Warto wspomnieć tu też, iż wszystkie inicjowane we Flutterze zmienne mają domyślnie wartość null, więc zamiast zapisu „var a = null;” wystarczy jedynie „var a;”.
Flutter wskazówki – jak uniknąć zamieszania przy importowaniu bibliotek?
Przy nawet niezbyt skomplikowanych projektach czasami trzeba zaimportować tę samą klasę w kilku miejscach. Lepiej nie robić tego na kilka sposobów w ramach jednego projektu, ponieważ generuje to jedynie niepotrzebne zamieszanie i zmniejsza czytelność kodu. Wiele osób nie zdaje sobie sprawy, iż przy względnych importach do biblioteki nie trzeba podawać pełnej ścieżki pliku źródłowego.
Flutter dobre praktyki – jak uprościć składnie języka Flutter?
W naszym poradniku nie uda nam się z pewnością omówić nawet połowy sposobów, w jakie można krócej zapisać ten sam fragment kodu, niemniej jednak przy pomocy prostych przykładów postaramy się zobrazować, jak bardzo ułatwia to pracę. Jedną z najczęściej stosowanych metod optymalizacji czytelności kodu jest interpolacja złożonych z wielu elementów stringów.
String name = 'Jan';
Int age = 35;
var greeting = 'Hi ' + name + '! You are ' + age + ' years old.';
var greeting2 = 'Hi $name! You are $age years old.';
Po wywołaniu zmiennej greeting i greeting2 otrzymamy dokładnie ten sam komunikat („Hi Jan! You are 35 years old”.). Jak łatwo można zauważyć, zapis jest dużo prostszy i mniej skomplikowany przy greeting2. Podobnie wygląda to w scenariuszu takim jak będące częścią siebie kolekcje. W teorii następujący zapis jest oczywiście poprawny:
var a = [1,2,3,4];
var b = [5,6];
b.addAll(a);
Ale w praktyce zdecydowanie łatwiej zapisać to można tak:
var a = [1,2,3,4];
var b = [5,6,…a];
Na koniec chcielibyśmy przypomnieć, iż sekwencyjne operacje na tym samym obiekcie także da się skrócić tak, aby nie trzeba było powtarzać tego samego kodu. Warto pamiętać też, iż do podniesienia czytelności wyrażeń warunkowych we Flutterze potrzebne mogą być również operatory takie jak „??” i „?.”
Flutter wskazówki – podsumowanie
Niezależnie od stopnia znajomości języka zdecydowanie dobrze oswoić się ze skróconymi wariantami zapisu kodu, ponieważ to właśnie z nich korzysta większość doświadczonych programistów. Dużo istotniejsza jest jednak kwestia zgodności kodu z przyjętymi w środowisku developerów konwencjami, ponieważ to właśnie dzięki niej łatwo zrozumieć można rolę dowolnego fragmentu kodu.
Bezpłatna konsultacja
Powiedz nam czego potrzebujesz, a nasi eksperci Powiedzą Ci jak to zrobić, ile to kosztuje i na kiedy będzie gotowe.