On Sonntag, 2. August 2015 20:32:43 CEST, David Jarvie wrote:

Having a date-only attribute in KDateTime is very useful because it allows both date-time and date-only values to be encapsulated in a single class. This avoids having to be able to pass either a QDate or QDateTime or to have a separate flag everywhere this is used, and it allows date-time values to be compared to date-only values using class methods.

Sorry, but I don't follow here.

QDateTime *has* a QDate AND a QTime member.
They can independently be null/invalid.

=> With a QDateTime with invalid QTime member, you *have* a QDate-only 
QDateTime, agreed?

The "problem" would be that

if (kdt.isValid()) {
  if (kdt.isDateOnly())
     foo();
  else
bar(); }

turns into:

if (qdt.date().isValid()) {
  if (!qdt.time().isValid())
     foo();
  else
bar(); }

right?
Doesn't look that horrible.

-

Now, it however seems to me you'd like to have a flag "butIgnoreTheTime" that 
hints for some client code behavior, ie. you actually want to carry valid date and time 
in the object, but in addition have a flag _in_the_object_ to effectively pass a 
parameter to a function to do something different with this object.

Is this actually correct?

=> That frankly sounds like a bool trap on steroids.

You've an object flying around that may or not have set this flag for some™ 
ominous reason in the past for some™ function call and different modules might 
have different requirements for this flag for different reasons... ewwww.


Imo, if you want to embed instructions on what to do with the object inside the 
object, they should rather be not the least ambiguous, ie. provide dynamic 
properties or such.

But, ultimately, function parameters belong into the function parameter list - not into 
object attributes (yes, "unless you're doing some hardcore optimizations or dirty 
side-channel communication hacks")

Cheers to my 2¢,
Thomas

Reply via email to