Marek Dąbek

Marek Dąbek Software Engineer,
Intel Technology
Poland

Temat: Standardy kodowania

Czy używacie jakichś standardów kodowania?
Jeśli tak, to czy używacie standardów zdefiniowanych zewnętrznie (np. MISRA C) czy macie wewnętrzne dokumenty definiujące zasady pisania kodu?
Jerzy M.

Jerzy M. C#/JavaScript
Developer

Temat: Standardy kodowania

Pisanie bez kompletnie żadnego 'standardu' to jest chyba masochizm ;-)

Ja ostatnio znalazłem http://google-styleguide.googlecode.com/svn/trunk/cppg... i staram się tego trzymać, ale ja kodze sobie dla rozrywki - (chyba że ktoś szuka kogoś bez doświadczenia? ;-) ) i pewne odstępstwa się zdarzają, a że ostatnio staram się ogarnąć XNA Game Studio, to C++ trochę na bok się odsunęło.

Temat: Standardy kodowania

Kazda firma, w ktorej pracowalem miala swoj wewnetrzny standard. Byc moze byly one oparte na publicznie dostepnych, nie mam pojecia.
Szymon Kubisiak

Szymon Kubisiak Developer aplikacji
mobilnych Android

Temat: Standardy kodowania

Ja używam kodowania UTF-8 : PPPP
Piotr P.

Piotr P. Software Developer

Temat: Standardy kodowania

GNU i K&R
Tomasz J.

Tomasz J. Właściciel swojego
życia :)

Temat: Standardy kodowania

Co do MISRA-C i MISRA-C++, to same standardy wybiegają trochę poza
to co określane jest standardem _formatowania_ kodu. To raczej
,,dobre praktyki'' z nastawieniem na bezpieczne aplikacje.
Z dostępnych podobnych standardów, można przyjrzeć się także
temu co proponuje CERT ( https://www.securecoding.cert.org ).
Tu jakość leży w określeniu wpływu na bezpieczeństwo aplikacji
konkretnych konstrukcji językowych i próba szacowania
pracochłonności znalezienia danego błędu oraz ... kilku innych
miar :) Jeśli chodzi o C, _stanowczo_ warto się zapoznać.

Co do stylu formatowania kodu, to większe firmy mają własne
(patrz SUN/Oracle, IBM, MS) a i mniejsze ,,wypracowują'' w ramach
projektów jakąś .. pochodną tych standardów. Hmm... problem leży
w tym aby nie tracić czasu na ,,święte wojny'' o to czy po przecinku
ma być spacja i osiągnąć konsensus w ramach _całego_ zespołu.
A to już nie do końca problem techniczny... :)

Co do sprawdzania kodu na zgodność z ... formatowanie automatyczne,
IDE dla środowisk wbudowanych (IAR, Keil) sprawdzanie na zgodność
z MISRA-C wbudowane.

Osobiście stosuję pochodną K&R z kilkoma poprawkami :)
Marek Dąbek

Marek Dąbek Software Engineer,
Intel Technology
Poland

Temat: Standardy kodowania

Tomasz J.:
Co do MISRA-C i MISRA-C++, to same standardy wybiegają trochę poza
to co określane jest standardem _formatowania_ kodu. To raczej
,,dobre praktyki'' z nastawieniem na bezpieczne aplikacje.

Oczywiście. Mając na myśli standardy kodowania, nie chodzi tylko o formatowanie kodu i jak pisać komentarze.
Bardziej skłaniam się ku podejściu, takiemu że wynikiem implementacji standardu w zespole ma być zestaw reguł kodowania, które ułatwiają osiągnięcie celu (np. wysokiej wiarygodności software).
Tomasz J.

Tomasz J. Właściciel swojego
życia :)

Temat: Standardy kodowania

Marek Dąbek:
Bardziej skłaniam się ku podejściu, takiemu że wynikiem implementacji standardu w zespole ma być zestaw reguł kodowania, które ułatwiają osiągnięcie celu (np. wysokiej wiarygodności software).

Wg. mnie narzędziem ,,standard formatowania kodu i braku
niebezpiecznych właściwości języka'', głównie podniosę _czytelność_
kodu i zmniejszę _prawdopodobieństwo_ popełniania błędów. To
prowadzi ale _pośrednio_ (nawet bardzo pośrednio) do wysokiej
wiarygodności oprogramowania. Bez wątpienia polepszę jednak
komunikowanie się pomiędzy uczestniczącymi w projekcie
programistami co jest już wartością, buduje jakość wewnętrzną
oprogramowania. Tylko że jakość wewnętrzna nie obchodzi klienta :>

Myślę że szybciej można osiągnąć podniesienie wiarygodności
oprogramowania poprzez:

Definicję dozwolonych konstrukcji:
- na poziomie zbliżonym do architektury (cytuję jedną
z wypowiedzi.. ,,no to przekazujemy ten wskaźnik na void i
radośnie rzutujemy czy nie?'') narzuconą w danym projekcie
lub ogólnie
- standard logowania zdarzeń lub przejścia modułu do
określonego stanu (ważne żeby standard wspólny i spójny w ramach
projektu lub portfela projektów)
- obsługi błędów (niedoskonałe zwracanie wartości i ,,magicznie
ustawiana'' zmienna błędu czy wyjątki które kosztują...)
pomijając fakt jak te wyjątki obsłużyć... czy przez ślad czy
łapiąc ,,blisko'' i obsłużyć
- określenie właściwości języka których _nie_wolno_wykorzystywać_
(a wiem że jest kilka technik które w C++ i C proszą się o...
niestosowanie :))
- jak i co z wielowątkowością... :) (oj.. trup w szafie :) )
...

Stosowanie metod i metodyk wytwórczych także na poziomie
architektury:
- TDD
- SOLID ( http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod )
- testy, a szczególnie zautomatyzowana regresja
- wzorce analityczne, projektowe i obsługi wielowątkowości
- dbałość o szybkie i automatyczne budowanie nowego wydania
oprogramowania
- separację ochrony i mechanizmów bezpieczeństwa
...

No dobra :) Wdepnąłeś w mój konik i trochę się rozpisałem :)
Szymon Kubisiak

Szymon Kubisiak Developer aplikacji
mobilnych Android

Temat: Standardy kodowania

Po prostu używasz tego standardu co zespół do jakiego trafiłeś.

konto usunięte

Temat: Standardy kodowania

Tomasz J.:
[...]
Co do stylu formatowania kodu, to większe firmy mają własne
(patrz SUN/Oracle, IBM, MS) a i mniejsze ,,wypracowują'' w ramach
projektów jakąś .. pochodną tych standardów. Hmm... problem leży
w tym aby nie tracić czasu na ,,święte wojny'' o to czy po przecinku
ma być spacja i osiągnąć konsensus w ramach _całego_ zespołu.
A to już nie do końca problem techniczny... :)
[...]

Jeśli zespół nie jest duży i standard ma powstać, to sprawdziłem sposób na w miarę bezbolesne redukowanie "punktów zapalnych". W "kontrowersyjnych" sprawach wypisujemy możliwości (np. spacja po if lub nie) i pozwalamy zaznaczać ludziom wg schematu "A - tak piszę", "B - tak jest dla mnie czytelnie, choć sam tak nie piszę", "C - tak jest dla mnie nieczytelne". Wybieramy tak, żeby minimalizować C. Jeśli jest więcej wariantów z minimalnym C takim samym (czytelne dla wszystkich), to bieżemy ten z maksymalnym A - pozostałe można dopuścić jako "dopuszczalne, niezalecane" (albo nie).

Strasznie poważnie to brzmi, ale przygotowanie dużej kartki z tabelką i flamastrami pozwala rozwiązać "spory światopoglądowe na spacje" w 10 minut 8-)
Marek Dąbek

Marek Dąbek Software Engineer,
Intel Technology
Poland

Temat: Standardy kodowania

Tomasz J.:
<
> Definicję dozwolonych konstrukcji:
- na poziomie zbliżonym do architektury (cytuję jedną
z wypowiedzi.. ,,no to przekazujemy ten wskaźnik na void i
radośnie rzutujemy czy nie?'') narzuconą w danym projekcie
lub ogólnie
- standard logowania zdarzeń lub przejścia modułu do
określonego stanu (ważne żeby standard wspólny i spójny w ramach
projektu lub portfela projektów)
- obsługi błędów (niedoskonałe zwracanie wartości i ,,magicznie
ustawiana'' zmienna błędu czy wyjątki które kosztują...)
pomijając fakt jak te wyjątki obsłużyć... czy przez ślad czy
łapiąc ,,blisko'' i obsłużyć
- określenie właściwości języka których _nie_wolno_wykorzystywać_
(a wiem że jest kilka technik które w C++ i C proszą się o...
niestosowanie :))
- jak i co z wielowątkowością... :) (oj.. trup w szafie :) )
...

Właśnie to co wymieniłeś wg. mnie przede wszystkim powinno znaleźć się w dokumencie opisującym standard kodowania (coding guidelines - jest jakiś dobry rodzimy odpowiednik?) To czy pisać spację przed czy po if jest drugorzędne. :)
Piotr P.

Piotr P. Software Developer

Temat: Standardy kodowania

Marek Dąbek:
Właśnie to co wymieniłeś wg. mnie przede wszystkim powinno znaleźć się w dokumencie opisującym standard kodowania (coding guidelines - jest jakiś dobry rodzimy odpowiednik?)

"Dobre praktyki programowania" ;)
To czy pisać spację przed czy po if jest drugorzędne. :)

Ale jest składową dobryk praktyk :)

Dla większości programistów, spacje, tabulacje itp określają standard kodowania. Ale sposób by napisać kod tak by ułatwił napisanie do niego testów (na przykład) już nie.
Maciej W.

Maciej W. *nix admin

Temat: Standardy kodowania

Polecam książkę:
http://www.gotw.ca/publications/c++cs.htm

Następna dyskusja:

Standardy kodowania




Wyślij zaproszenie do