3. October 2016

Siriel 04 – #ifdef in Unity could lead into bad code maintainability

I was playing with Unity. Extending functionality bit by bit. Then I decided to make my game available also for mobile device.

So I searched for another tutorial from Unity – 2D Roguelike 14 of 14 : Mobile Controls. The tutorial seemed to be ok. But at one moment I froze in horror. The author was using #ifdef directly in high level code.

In my opinion this is very bad code smell. If you’re C expert and you’re playing with low-level API then you’ll need #ifdef, but this is high level code.

You may ask what is wrong about #ifdef in my “C# Script”. Well, here is very nice answer for C++.

#ifdef is something which should be treated with maximal caution, because it has tendency to explode into many Heisenbugs.

25. June 2009

Vizualizácia kódu

Zorientovať sa vo veľkých softvérových projektoch, ktoré človek doteraz nevidel a žil v šťastnej nevedomosit o ich existencii, nie je vôbec jednoduchá úloha. Vo veľkom projekte sa môže stratiť nie len náhodný cudzinec, ale aj príslušníci kmeňa vývojárov, ktorý sa o projekt starajú. No a z hlavného architekta sa stane kmeňový šaman, veštiaci architektúru z rozhádzaných kostí. Pri projektoch, ktoré rastú a rozvíjajú sa, môže tento problém nastať veľmi rýchlo.

Na pomoc s orientáciou v kóde sa používa vizualizácia pomocou diagramov a schém. Prvý nápad ako vizualizovať kód napríklad C++ servera je nakreslenie tried do UML. Pokiaľ má projekt niekoľko stoviek až tisícok súborov so zdrojovým kódom, nie je to veľmi šťastný nápad. Existujú nástroje, ktoré vám pomocou Reverse engineeringu zostavia UML schému.

UML je síce pekné, ale takéto zobrazenie nemá takmer žiadnu vyjadrovaciu silu. Dôležité informácie zapadnú v kvante ďalších informácií a k reverse engineeringu musíte pripojit steganografiu a datamining.

Existujú projekty, ktoré vedia zanalyzovať kód a vytiahnuť z neho veľmi zaujímavé informácie. Pokiaľ sa pohybujeme v dvojrozmernom svete, tak stojí za to zmieniť dva z nich.

CodeCrawler prehľadáva kód a zobrazuje ho vo forme jednoduchého grafu. Projekt je určený primárne pre Scheme.

Zaujímavjším je projekt X-Ray. Jedná sa o plugin do Eclipse. Analýza je omnoho interaktívnejšia, takže priamo v prostredí IDE, je vývojár schopný vidieť, kde sa mu v projekte vytvárajú príliš veľké triedy alebo God objekty.

Tu len pripojím malú poznámku: god objekt v projekte, je ten, ktorý toho vie príliš veľa a robí príliš veľa. Typicky vzniká postupnou kumuláciu funkcií v singletonoch. Jedná sa o antipattern.

Trojrozmerný svet prináša novú dimenziu 🙂 Pomocou nástroja CodeCity je možné kód vizualizovať vo forme mesta. Na základe relatívne jednoduchej vizualizácie dokážete  v kóde identifikovať “budovy”, ktoré sú príliš veľké alebo tenké a vysoké. Tieto krajné prípady predstavujú zdroj potenciálnych problémov pri ďalšom vývoji.

Argo UML v024-coarse

Dobrý podcast na tému vizualizácia kódu nájdete na stránkach Software Engineering Radio.

  • Where’s the fish?

  • Translations

  • Further info

  • Twitter

    Follow @jurajmichalek on twitter.

  • Comments

  • Tags

  • Topics