Pracuję nad aplikacją średnio osadzoną w C przy użyciu technik podobnych do OO. Moje „klasy” to moduły .h / .c wykorzystujące struktury danych i struktury wskaźników funkcji do emulacji enkapsulacji, polimorfizmu i wstrzykiwania zależności.
Teraz można oczekiwać, że myModule_create(void)
funkcja będzie miała myModule_destroy(pointer)
odpowiednik. Ale ponieważ projekt jest osadzony, zasoby, które są tworzone realistycznie, nigdy nie powinny zostać uwolnione.
Mam na myśli, że jeśli mam 4 porty szeregowe UART i utworzę 4 instancje UART z wymaganymi pinami i ustawieniami, nie ma absolutnie żadnego powodu, aby kiedykolwiek chcieć zniszczyć UART # 2 w pewnym momencie podczas uruchamiania.
Czy więc zgodnie z zasadą YAGNI (nie będziesz jej potrzebować), czy powinienem pominąć destruktory? Wydaje mi się to bardzo dziwne, ale nie mogę wymyślić dla nich zastosowania; zasoby są zwalniane po wyłączeniu urządzenia.
myModule_create(void)
funkcję? Możesz po prostu zakodować określone wystąpienia, których spodziewasz się użyć w ujawnianym interfejsie.