Demande d'avis : critique d'une classe toute simple
Bonjour,
Je viens de finir d'écrire une classe toute simple permettant de calculer le temps écoulé d'un point à l'autre d'un algo.
Vu que j'écris le plus souvent des routines en C++ pas vraiment orientées objet / réutilisables, j'aimerai savoir si dans ce code vous voyez des choses dérangeantes ou contraire aux bonnes pratiques.
Je pense aux points suivants :
-usage des inline
-retour de références sur membres par les getters (devrai-je préférer une copie? )
-affectation de classe avec "=" (dans ptime, il me semble que "=" n'est pas redéfini pour retourner une référence), faudrait-il y aller à coup de pointeurs?
-autres?
Merci d'avance...
Stopwatch.h
Code:
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 65
|
#ifndef _STOPWATCH_H
#define _STOPWATCH_H
#include <boost/date_time.hpp>
namespace bpt = boost::posix_time;
class Stopwatch
{
public:
//value returned in case of misuse of the class
static const long NO_DURATION = -1000;
Stopwatch( bool immediateStart );
virtual ~Stopwatch();
//watch control
inline void start();
inline void stop();
inline void reset();
//result calculation
long elapsedMillis() const;
inline const bpt::ptime& getStartTime() const;
inline const bpt::ptime& getStopTime() const;
private:
bpt::ptime startTime;
bpt::ptime stopTime;
};
inline const bpt::ptime& Stopwatch::getStartTime() const
{
return startTime;
}
inline const bpt::ptime& Stopwatch::getStopTime() const
{
return stopTime;
}
void inline Stopwatch::reset()
{
startTime = bpt::not_a_date_time ;
stopTime = bpt::not_a_date_time ;
}
void inline Stopwatch::start()
{
startTime = bpt::microsec_clock::universal_time() ;
stopTime = bpt::not_a_date_time ;
}
void inline Stopwatch::stop()
{
stopTime = bpt::microsec_clock::universal_time() ;
}
#endif /* _STOPWATCH_H */ |
Stopwatch.cpp
Code:
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
|
#include "Stopwatch.h"
Stopwatch::Stopwatch( bool immediateStart )
: startTime( immediateStart ? bpt::microsec_clock::universal_time() : bpt::not_a_date_time )
{
}
Stopwatch::~Stopwatch()
{
}
long Stopwatch::elapsedMillis() const
{
//watch isn't running...
if( startTime.is_not_a_date_time() )
return NO_DURATION;
//stop() wasn't called, return approx so far;
if( stopTime.is_not_a_date_time() )
return (bpt::microsec_clock::universal_time() - startTime).total_milliseconds();
//normal
return (stopTime - startTime).total_milliseconds();
} |