Istnieją różne standardy kodowania egzekwowane w firmach programistycznych, których celem jest zwiększenie niezawodności, przenośności i, co najważniejsze, czytelności kodu napisanego wspólnie przez różnych programistów.
Dwa godne uwagi przykłady to MISRA C i standard C ++ opracowany dla projektu JSF .
Zazwyczaj mają one następującą formę, po dokładnym określeniu, co oznaczają słowa „musi”, „powinno”, „powinno”, „może” itd.:
Przykład:
Reguła 50: Zmiennych zmiennoprzecinkowych nie bada się pod kątem dokładnej równości lub nierówności.
Uzasadnienie: Ponieważ liczby zmiennoprzecinkowe podlegają błędom zaokrąglania i obcinania, dokładna równość może nie zostać osiągnięta, nawet jeśli jest to oczekiwane.
Te standardy kodowania nakładają ograniczenia, zwykle na kod, który byłby legalny z punktu widzenia kompilatora, ale jest niebezpieczny lub nieczytelny i dlatego jest „uważany za szkodliwy”.
Teraz wykorzystajmy to!
Zostajesz zaakceptowany jako członek małego komitetu normalizacyjnego w swojej firmie, który ma opracować nowe standardy kodowania, z których będzie musiał korzystać każdy programista w firmie. Bez wiedzy innych, potajemnie zatrudniasz złowrogą organizację i Twoim zadaniem jest sabotowanie towarzystwa. Musisz zaproponować jeden lub więcej wpisów do standardu kodowania, które później będą utrudniać programistom. Należy jednak uważać, aby nie uczynić tego natychmiast oczywistym, w przeciwnym razie ryzykujesz, że nie zostanie zaakceptowany w standardzie.
Innymi słowy, musisz wprowadzić zasady do standardu kodowania, które wyglądają na uzasadnione i mają duże szanse na zaakceptowanie przez innych członków komitetu. Po rozpoczęciu projektów i zainwestowaniu w kod niezliczonych roboczogodzin, powinieneś być w stanie nadużyć tych zasad (na przykład ze względów technicznych lub bardzodosłowna interpretacja), aby oznaczyć kod normalny i dobrej jakości jako niezgodny ze standardem. Muszą więc włożyć dużo wysiłku w przeprojektowanie go, a reguły będą odtąd im przeszkadzać, ale ponieważ reguły są aktywne już od dłuższego czasu, czysty pęd utrzyma te role przy życiu, a ponieważ istnieją znaczące konflikty interesów między różnymi poziomami zarządzania, inni menedżerowie prawdopodobnie utrzymają zasady przy życiu (głupotą byłoby przyznać się do błędu!), utrudniając tym samym firmę! Mwahahahahaaa!
Punktacja
Najwyższa głosowana odpowiedź wygrywa po około 2 tygodniach od pierwszego ważnego wpisu. Mam pomysł na dobrą odpowiedź, ale opublikuję ją dopiero kilka dni później, ponieważ ktoś inny może dojść do tego samego pomysłu i nie chcę okradać ich z przyjemności. Oczywiście moja własna odpowiedź nie zostanie zaakceptowana ponad wszystko, bez względu na wynik.
Wyborcy są zachęcani do oceniania odpowiedzi na podstawie tego, jak dobrze luki są ukryte i jak frustrujące byłyby dla programistów.
Zasady i przepisy
- Reguła lub reguły muszą wyglądać profesjonalnie napisane, jak w powyższym przykładzie
- Reguły powinny wyglądać autentycznie (więc rzeczy takie jak „wszystkie zmienne muszą zawierać co najmniej jeden znak podkreślenia, jedną wielką literę, jedną małą literę i dwie cyfry” nie są akceptowane. W rzeczywistości utrudniłyby programistom, ale najprawdopodobniej nie zostałyby zaakceptowane przez komitet), a jeśli ich zasługi nie są od razu oczywiste, należy podać dobre uzasadnienie.
- Powinieneś być w stanie znaleźć sposób na wykorzystanie / nadużywanie swoich zasad, aby później sabotować programistów. Możesz nadużywać niejednoznaczności w innych regułach lub możesz stosować wiele reguł, które same w sobie są nieszkodliwe, ale po połączeniu diaboliczne!
- Powinieneś zamieścić wyjaśnienie w tagach spoiler na końcu swojego postu, w jaki sposób możesz nadużyć zasad
- Używany język nie może być językiem ezoterycznym. Należy wybrać język szeroko stosowany w prawdziwych projektach, dlatego preferowane są języki ze składnią podobną do C (zamiast rzeczy takich jak Golfscript).