Re: coding style

Posted by Luigi Ballabio on
URL: http://quantlib.414.s1.nabble.com/coding-style-tp9335p9339.html

On Thu, 2007-04-05 at 15:10 +0200, DU VIGNAUD DE VILLEFORT FRANCOIS
GASAPRD PHI wrote:

> >Possibly. At the end of the day, the client code must instantiate all
> >needed classes, so it's likely that it includes everything.
> >However, the advantage is in compilation times for the library. On the
> >one hand, the overall time can decrease as each source file might
> >include less headers. On the other hand, and more importantly,
> >incremental compilations are faster since changing a header file might
> >cause less source files to be recompiled.
>
> Well, since all classes are compiled in the library, they also must
> have access sooner or later to the actual definition of the classes
> they are depends on.

Non necessarily. Let's say we have:

- a class Foo declared in foo.hpp and implemented in foo.cpp;
- a class Bar that stores, say, a pointer to Foo. In bar.hpp, we
  only need a forward declaration of Foo. In bar.cpp (where the
  Foo object is manipulated) we need to include foo.hpp.
- a class Baz which takes a pointer to Foo as argument, passes it
  to a Bar, and stores (and possibly manipulates) the resulting Bar.

Since Baz is not going to use Foo directly, baz.cpp does not need to
include its definition---the forward declaration in bar.hpp is
enough---and can be compiled successfully without including foo.hpp.


> >> Another one, what about refactoring the QL folders hierarchy since we
> >> are using svn?
>
> >Sure. Any ideas?
>
> I would move some existing folders and files as follows
>
> math:
> optimization
> randomnumbers
> solver1D
>
> time:(new)
> calendars
> daycounters
> (schedule.*, BDC, weekday, ...)
>
> methods:(new)
> finitedifferences
> montecarlo
> lattices
>
> termstructures:
> Volatilities
>
>
> I would also create the following subfolders:
> math:
> integrals
> distributions
> interpolations
>
> instruments:
> swaps
> bonds
> options
>
> termstructures:
> yieldCurve
> volatilities

yieldcurves, you mean. Plural and lowercase.

About instruments, I'm not so sure. But all the others seem ok to me.
Any other votes, anybody?

Later,
        Luigi


----------------------------------------

The purpose of abstraction is not to be vague, but to create a new
semantic level in which one can be absolutely precise.
-- W.E. Dijkstra



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev