Hello,

  looks like someone added a new class set to NGL (nglDataObjects), and
did not "read the manual". Well here's the catch: it's written "beware
of the dog" on the frontpage. I'm the dog, and I bite.

  More seriously, so many things are wrong that I'd rather see the
commiter learn about them and fix them. Should be a matter of 20 minutes
and will raise one's coding standards.

  Complaints:

  1. No entry in ChangeLog. This is a major commit with a new class, and
I can't tell the who, when and why instantly. BAD.

  2. DOS-style text appended (nglDataObjects.h, nglWindow.h). BAD. I'll
fix this myself on the repository side. Windoze side: your editor can do
unix-style end of lines, find the knob/plugin/hammer.

  3. Doxygen tags omited (BAD), or completely wrong/mangled (VERY BAD).
I fixed some of them (/////// and other decorations are *not* Doxygen
compliant).

  4. No context info. The description of nglDataObjects.h was "Data
objects interface" : I couldn't guess, really. I added "MIME registry
for drag and drop operations, see nglWindow". Maybe I'm wrong, but at
least it gives a hint.

  5. All code in header file. VERY VERY BAD. Please move this in .cpp
files ASAP. Don't bore me with 'optimizations' until you can physically
drag'n'drop stuff a hundred of times per second.

  6. Platform code in a single place with many #ifdefs of wholy
reimplemeted functions or bunch of functions. BAD. See 5) and have .cpp
files in the right place (src/core/<platform>).

  7. "Registery" is not english, but "Registry" is. Please fix all
occurences.

  8. "extern nglDataTypesRegistery gDataTypesRegistery;". So wrong.
We've worked hard so there is only one global (App) in NGL. The registry
instance should probably be a member of nglKernel. At worst, a singleton
which is retrievable via a static method of nglDataObjects (but don't
expect this design to be portable, X11 woes expected). A good idea is to
debate about this issue on the mailing-list.

  Last but not least, you cannot both declare a type and some variable
of this type as extern in the same header: in the cpp file, you'll
include the header to fetch the type, and end with both 'static' and
'extern' definitions of this global. Unpredictable linker behaviour
(hopefully gcc won't even compile).

  Groar.



Reply via email to