In een bepaald programma dat ik ontwikkel werk ik volledig object-geörienteerd. Nu heb ik het volgende bedacht:
Stel dat je alle (belangrijke) klassen gaat afleiden van een basisklasse CUnknown. Op zich gaat CUnknown weinig doen, maar als er staat "#define DEBUG", dan start hij een log en kijkt hij welke klasse er zich registreert.
Een voorbeeldje?
(nota: ik heb hier enkel de belangrijkste items gezet)
In het logboek wordt er dus (bij debug modus) weggeschreven welke klasse(types) zich registeren. Als het programma crasht bij het creëren van een kasse (via "new" bvb), dan kan je in het log terugvinden bij welke klasse het programma is gecrasht.
Wat ik me afvraag:
Vinden jullie dit een goede werkwijze of is dit pure tijdverspilling?
Stel dat je alle (belangrijke) klassen gaat afleiden van een basisklasse CUnknown. Op zich gaat CUnknown weinig doen, maar als er staat "#define DEBUG", dan start hij een log en kijkt hij welke klasse er zich registreert.
Een voorbeeldje?
(nota: ik heb hier enkel de belangrijkste items gezet)
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| class CUnknown { /** * Constructor. */ CUnknown() : iRefCount(0), strDebugName("") { } /** * Destructor. */ virtual ~CUnknown() { #ifdef DEBUG if (iRefCount!=0) { logDebug.writeLn("Class: forgotten registration: %s (reference count %d)", strDebugName.c_str(), iRefCount); } #endif } /** * Register the class. * \param strName class name. */ void Register(string strName) { strDebugName = strName; ++iRefCount; #ifdef DEBUG logDebug.writeLn("Class: registered: %s (reference count %d)", strDebugName.c_str(), iRefCount); #endif } /** * Unregister the class. * \return true if succes. */ bool Unregister() { --iRefCount; #ifdef DEBUG logDebug.writeLn("Class: unregistered: %s (reference count %d)", strDebugName.c_str(), iRefCount); #endif return true; } }; class Blaat { Blaat() { #ifdef DEBUG Register("Blaat klasse"); #endif } ~Blaat() { #ifdef DEBUG Unregister(); #endif } }; |
In het logboek wordt er dus (bij debug modus) weggeschreven welke klasse(types) zich registeren. Als het programma crasht bij het creëren van een kasse (via "new" bvb), dan kan je in het log terugvinden bij welke klasse het programma is gecrasht.
Wat ik me afvraag:
Vinden jullie dit een goede werkwijze of is dit pure tijdverspilling?
[ Voor 3% gewijzigd door Verwijderd op 05-11-2004 21:23 . Reden: ";" ]