Kashiash's Blog

o programowaniu inaczej : jak zrobić i się nie narobić

Archive for the ‘Dobre praktyki’ Category

Piękny kod …? To programowanie czy wybory miss ?

Posted by kashiash w dniu 28 listopada, 2010

Wcześniej napisałem o pisaniu kodu na skróty, ale nie określiłem co jest na skróty a co nie jest … Warto to mieć gdzieś spisane i dostępne pod ręką , unika się wtedy analizowanie czy „skrót”, który chce zastosować to już skrót czy może  optymalna metoda zakodowania tego co własnie robimy.

Z tych najbardziej popularnych to :

– nie należy używać instrukcji „goto” – co ciekawe prawie każdy język ja ma … ciekawe dlaczego ? Wytłumaczeń jest kilka, ale najbardziej istotne jest to że kod z takimi kwiatkami jest mało czytelny i trudno go użyć bez większych modyfikacji w innym miejscu programu.

– nie należy używać zmiennych globalnych.  Dane można przekazywać jako parametry w funkcjach i procedurach

– zakres dostępności zmiennych powinien być jak najmniejszy. W przypadku pogańskich języków programowania zmienne można deklarować bezpośrednio przed użyciem, clarion (z małymi wyjątkami) zmusza do deklarowania zmiennych w sekcji przeznaczonej na deklaracje, ale zmienna używana w routine powinna być dostępna tylko w routine, jeśli w procedurze deklarujemy wewnętrzne procedury to ich zmienne powinny być tez dostępne tylko w podprocedurach. Dla kilku procedur wspólna zmienna  możemy zdefiniować w module grupującym te procedury. Globalne kolejki mają tendencje do wysypywania aplikacji (jest pewien problem ze współdzieleniem takich kolejek w wielu wątkach)

– stosuj wcięcia w kodzie. Kod odpowiedzialny za różne funkcjonalności rozdzielaj pustymi wierszami. Zdecydowanie poprawia to czytelność.

– kod powinien sam się dokumentować! Jeśli procedury i funkcje ponazywasz tak, że nazwa mówi do czego służy to analiza takiego kodu będzie dużo prostsza. Przy właściwym podejściu do tematu dodatkowe komentarze będą prawie zbędne, oczywiście bez utraty czytelności i łatwości analizy intencji programisty.

– unikaj zagnieżdżeń kodu, LOOP z CASE/IF/LOOP  w środku jest jeszcze ok, ale kolejny wewnętrzny LOOP  powinien być już zakodowany jako osobna funkcja/procedura.  Jeśli trzeba przekazać sporo parametrów do takiej procedury, może warto te zmienne zgrupować w jakimś obiekcie i przekazywać pojedynczy obiekt zamiast kilkunastu parametrów ?

– funkcje powinny być krótkie, kiedys istniała dobra praktyka nie przekraczania wielkości ekranu, czyli jeśli kod funkcji nie mieścił się na ekranie bez przewijania to kwalifikował się do podzielenia. Warto tez przypomniec sobie, jakie wówczas były ekrany: 24*80 znaków. Obecnie ekrany są większe i mieszczą więcej kodu, jednak stopień percepcji programujących raczej się nie poprawił.

– w przypadku klas i obiektów interfejs komunikacji z nimi powinien być jak najwęższy, czyli cechy czynimy prywatnymi, dajemy możliwość ich modyfikacji tylko przez gettery i settery, a jeszcze lepiej (jeśli obiekt po utworzeniu nie będzie modyfikowany) jedynie przez konstruktor. Hermetyzacja rządzi ;).

– od kilku lat zwalczam w sobie wypełniania embeds kodem dłuższym niż 2 linijowym. Użycie takiego kodu w innym miejscu jest uciążliwe i prowadzi do wielokrotnego powtarzania fragmentów kodu w wielu miejscach programu.  Zły przykład daje sam clarion, który wkleja spore fragmenty kodu w każdej z procedur, ale robi to z szablonów i nie ma problemów z wielokrotnym używaniem tej samej funkcjonalności w wielu miejscach i zwykle nie jesteśmy zmuszani do analizowania kodu wygenerowanego. Nie należy się sugerować tym co robi clarion, tylko zwracać na wybitnie długaśne fragmenty kodu własnego autorstwa.

Ciąg dalszy nastąpi …

Posted in Clarion, Dobre praktyki | 4 Komentarze »

Programowanie na skróty…

Posted by kashiash w dniu 25 listopada, 2010

Tym razem nie o tym żeby jak najszybciej coś napisać…

Niekiedy podczas pisania kodu mam ochotę zrobić coś jak najszybciej, tak żeby tylko działało. Wsadzić kawał kodu gdzieś do embeds, skopiować go kilka razy – zamiast zrobić porządną pętlę czy dodatkowa procedurę. Znacie to uczucie ? Niekiedy przypomina to standardowe działanie służb drogowych zasypujących dziury w jezdni śniegiem. Zwykle to się w bliskiej przyszłości mści (np jak przyjdzie odwilż ;)). Dlatego staram zwalczyć w sobie chęć pójścia na skróty i od początku robić to tak jak powinno wyglądać w wersji ostatecznej. Oczywiście niekiedy terminy tak gonią, że na dbanie o piękno kodu po prostu czasu brakuje i droga na skróty jest jedyna możliwości dotrzymania terminów. Należy jednak pilnować żeby po zakończeniu zadania nie brać się za kolejne, które tez prawdopodobnie w pierwszej iteracji potraktujemy na skróty, a posprzątać tam gdzie zostawiliśmy niemało bałaganu. I należy to zrobić natychmiast, a nie w bliżej nieokreślonej przyszłości. Im później tym takie sprzątanie będzie trudniejsze, bardziej czasochłonne, a niekiedy praktycznie niewykonalne – np wtedy gdy na bazie tak napisane kodu powstanie spora funkcjonalność systemu.

Dlatego należy konsekwentnie zwalczać w sobie takie pokusy, ulegać im w naprawdę wyjątkowych sytuacjach, a jak już nam się zdarzy, to jak najszybciej poprawić to co jest pospinane na sznurki, plastelinę czy też zasypane sniegiem – nawet jeśli dobrze ubite!

Posted in Dobre praktyki | Leave a Comment »

Pojawił się Clarion 7.2

Posted by kashiash w dniu 24 lipca, 2010

Tak naprawdę już ponad miesiąc temu miałem go w rękach. Niestety uzywam wielu bibliotek dodatkowych i nie miałem każdej kompatybilnej z nowym clarionem. Przedwczoraj dostałem ostatnia brakującą i połowa wczorajszego dnia zajęta była instalowaniem. Problem nie jest z Clarionem, tylko ze mną. okazało sie, że pomimo posiadanej zbiorczej listy szablonów do niektórych kody aktywacyjne są nieaktyalne lub po prostu z lenistwa ich nie wpisałem. Wiekszośc czasu zajęło mi przeszukiwanie inboxa w poczcie prywatnej oraz w firmowej w celu wyszukania potrzebnych informacji. W końcu mam działającego nowego clariona (o tym co nowe napisze w kolejnym wpisie). Z poprzedniego dnia wyciągnałem nastepujace wnioski.

lista z kodami aktywacyjnymi powinna być aktualna (wczoraj ja zaktualizowałem)
powinna też mieć linki skąd pobrać najnowszą wersję
wszystko co skompletujemy do instalacji należy zarchiwizować i trzymać w bezpiecznym miejscu
w przypadku pojawiania sie aktualizacji bibliotek lista i katalog programów instalacyjnych powinny być aktualizowane na bieżaco
wtedy zamiast stracić pół dnia, wystarczy pół godziny

Posted in Clarion, Dobre praktyki | Leave a Comment »

Postać normalna bazy danych

Posted by kashiash w dniu 5 czerwca, 2010

W internecie można znaleźć informacje na temat postaci normalnych w wielu miejscach. Ja znalazłem w formie plakatu. Ważne jest to, że postacie normalne powinny być stosowane ale nie bezmyślnie i bezwzględnie. Niekiedy delikatne odstępstwo sie przydaje. Reguły niestety nie mam … robię to intuicyjnie, po prostu jak normalizacja ci bardzo przeszkadza w pisaniu programu to zrób mały wyjątek. Jak projektujesz bazę projektuj bez wyjątków. Łatwiej jest baze zdenormalizować niż normalizować

Arkusz o normalizacji: rettigNormalizationPoster

Ściąga z SQL SQLServerCheatSheet

Struktura tabel technicznych SQL’a 2008: SQL-SERVER-2008-System-Views-Poster

Posted in Dobre praktyki, SQL | Leave a Comment »

Dobre nawyki programisty – funkcje

Posted by kashiash w dniu 1 czerwca, 2010

1. Nadmiar argumentów
Funkcje powinny mieć jak najmniej argumentów, najlepiej wcale. W przypadku clariona jest to o tyle możliwe że argumentami funkcji mogą być dane z bieżącego rekordu które dostępne są w całym wątku dla wszystkich procedur. Jeśli argumentów jest wiecej niz 3 warto pomyśleć o stworzeniu obiektu który ma kilka cech i jako parametr przekazywać taki obiekt.
2. Argumenty Wejściowo-Wyjściowe przekazywane zwrotnie przez wskaźnik w clarionie
Nigdy ich nie lubiłem, nie były dla mnie intuicyjne i dość ciężko analizuje się taki kod – jeśli funkcja ma zwracać wiele wyników ..niech zwraca obiekt lub typ złożony (dla nie lubiących OOP)
3. Stare/martwe funkcje
Jeśli funkcja nie jest używana powinna być usunięta z systemu. Podobnie jeśli jest backupem po jej modyfikacji

Posted in Clarion, Dobre praktyki | Otagowane: , , , | Leave a Comment »

Dobre nawyki programisty – komentarze w kodzie

Posted by kashiash w dniu 25 Maj, 2010

1 Niepotrzebne komentarze
nie należy wpisywać niewłaściwych niepotrzebnych komentarzy, np historia zmian – lepsze do tego miejsce to opisy przy wysyłaniu wersji na svn
2 przestarzałe komentarze
komentarz mógł zostać napisany do I wersji kodu, przy zmianach kolejnych programiście ciężko jest aktualizować komentarz. W efekcie komentarz swoje a kod swoje
3 nadmiarowe komentarze
nie ma sensu opisywać kodu oczywistego. komentarze powinny informować o tym czego nie można wywnioskować z kodu
4 złe komentarze
Jeśli już piszemy komentarz, warto go napisać dobrze, a nie na odpierdol bo czepiają się jak komentarza brak. Pisać zwięźle, poprawną polszczyzną z zachowaniem zasad gramatyki i ortografii.
5. zakomentiowany kod należy usuwać.
Osobiście robię tak ze kod komentuje i wpisuje mu datę ważności ok 30 dni. Jeśli po okresie ważności znajdę taki zakomentowany kod wiem ze mogę go osunąć o do niczego nie jest potrzebny. W dodatku zawsze można do niego wrócić pobierając wersje z SVN. Dlatego gdy zobaczysz zakomentowany kod po prostu usuń go.

Naczelna zasada powinno być tak że kod programu powinien sam siebie dokumentować i dodatkowe komentarze nie są wtedy potrzebne.

Posted in Clarion, Dobre praktyki | 2 Komentarze »