Jakiś czas temu zadałem pytanie na temat SO napisane w C ++, ale zamiast uzyskać odpowiedź na dany problem, komentarze oszalały na temat mojego stylu kodowania, nawet gdy wskazałem, że jest to fragment kodu WIP i że zamierzałem to wyczyścić później, kiedy miałem uruchomioną skrzynkę podstawową. (Otrzymałem tyle głosów, że zdecydowałem się wyciągnąć pytanie, ponieważ mój przedstawiciel na SO jest już prawie bez szans)
Zastanawiałem się, dlaczego ludzie przyjmują tak twardą postawę: „jesteś noobem, idź się pieprzyć”. Zostałem oskarżony o pisanie w C ++ tak, jakby to była Java. Coś, czego nie rozumiem, a to wciąż mnie zaskakuje.
Od wielu lat programuję w kilku językach OOP, aczkolwiek w przerwach. Wybieram język, który ma być używany, pod względem dostępnych bibliotek i optymalnych środowisk wykonywania dla danego zadania. Przyjmuję wzorce projektowe w kodzie OOP i jestem całkiem pewny, że moje użycie wzorców jest prawidłowe i że OO jest mądre, mogę trzymać własne. Rozumiem zestaw narzędzi OOP, ale wybieram korzystanie z tych narzędzi tylko wtedy, gdy uważam, że jest to naprawdę wymagane, a nie tylko po to, aby użyć mojej sztuczki, aby pokazać moje umiejętności programistyczne. (Wiem, że nie są na najwyższym poziomie, ale myślę, że nie są też na poziomie n00b).
Projektuję kod przed napisaniem pojedynczego wiersza. Aby zdefiniować testy, wymieniam cele określonej klasy i kryteria, które musi spełnić. Ponieważ łatwiej jest mi tworzyć diagramy sekwencji, a następnie pisać kod, postanowiłem napisać moje testy po tym, jak interfejs stanie się oczywisty.
Muszę przyznać, że w kodzie, który zamieściłem w pytaniu, nadal używałem wskaźników, zamiast inteligentnych wskaźników. Używam RAII, kiedy tylko mogę. Wiem, że właściwe RAII oznacza ochronę przed punktami zerowymi, ale działam stopniowo. To była praca w toku i zamierzałem ją później wyczyścić. Ten sposób pracy został zdecydowanie potępiony.
Moim zdaniem najpierw powinienem mieć działający przykład, aby sprawdzić, czy przypadek podstawowy jest realnym sposobem myślenia. Zdarza mi się również myśleć, że wyczyszczenie kodu jest czymś, co jest typowe dla fazy refaktoryzacji zwinnej, po udowodnieniu podstawowego przypadku. Muszę przyznać, że chociaż powoli otrzymuję standard Cxx, wolę używać tego, co rozumiem, zamiast ryzykować używanie koncepcji, których jeszcze nie opanowałem w kodzie produkcyjnym. Od czasu do czasu próbuję nowych rzeczy, ale zwykle w projektach, które mam na boku, tylko w tym celu.
[edytuj] Chciałbym wyjaśnić, że sugestia komara [1] nie pojawiła się w wyszukiwaniu, które zrobiłem, zanim zacząłem zadawać moje pytanie. Jednak chociaż jego sugestia obejmuje jeden aspekt pytania, pytanie, do którego się odnosił, nie odpowiada na sedno mojego pytania, a jedynie na jego część. Moje pytanie dotyczy bardziej odpowiedzi na mój styl kodowania oraz profesjonalnych aspektów obsługi różnych stylów kodowania i (pozornych) poziomów umiejętności. Z moim poprzednim pytaniem w sprawie SO i jego odpowiedzią jest przypadek. [/edytować]
Pytanie brzmi: dlaczego szydzić z kogoś, kto nie używa twojego stylu kodowania?
Sprawy / podziały dla mnie są następujące:
- Dlaczego niewłaściwą praktyką programistyczną byłoby używanie kodu podatnego na błędy w sytuacjach prototypowych, jeśli refaktoryzacja czyni go później bardziej niezawodnym?
- W jaki sposób program napisany w C ++ mógłby wyglądać tak, jak napisano w Javie? Co sprawia, że jest to zły program (biorąc pod uwagę, że wskazałem zamiar obecnego stylu i planowane prace nad ulepszeniem?)
- Jak miałbym być kiepskim profesjonalistą, jeśli wybiorę konstrukcję używaną w pewnym paradygmacie programowania (np. OOP / DP)?
int
zmiennymi do śledzenia rzeczywistej długości.