[bt-devel] Feature-a-thon
Jaak Ristioja
Ristioja at gmail.com
Sat Jan 2 03:49:08 MST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
To save some time for some people, I must note that this letter is about
C++ code refactoring in BibleTime rather than the feature-a-thon.
On 01.01.2010 22:20, 'Kang Sun' wrote:
> * Jaak Ristioja <Ristioja at gmail.com> wrote on [2010/01/01 11:34]:
>>
>> On 01.01.2010 19:13, 'Kang Sun' wrote:
>>> The roadmap is a really good idea. I would also like to see a design
>>> plan for the APIs as well.
>>
>> What exactly do you have in mind by "a design plan for the APIs"? Are we
>> discussing interfacing with other software? Please share.
>
> No, I'm thinking of standardizing how the public interfaces of some
> classes are laid out. This is to keep things stable when new features
> are added, so that the new code doesn't need to be constantly updated to
> the public interfaces. Of course, refactoring can go on at full speed
> on the private implementation side.
BT is a small project. Binary compatibility is definately not an issue
right now. What remains is that when changing public interfaces means we
might have to refactor other parts of code that use these interfaces.
Personally I don't find it difficult to do nor see it as a problem to do
so if our code is modular/re-usable enough (e.g. parts can be put
together like a puzzle that interact with each other, parts can be
removed, replaced etc). In addition it is sometimes inevitable that
public interfaces of classes change.
> Since we have been talking about a major refactoring for a while, now
> might be a good time to discuss best practices and design patterns that
> will be used for the base classes and other more upper level classes.
> There are issues like having the same private data member of the same
> type existing in each inheritance level of a derived class. Are so many
> copies really needed or is there a need for a getter/setter method to
> provide access to derived classes? It makes the code hard to maintain
> and hard to understand (at least to me).
I didn't wholly understand you at this point but I agree that this is a
source of confusion. I think that subclasses should not override any
members/methods of their superclass, except reimplement methods which
are declared virtual.
> I would like to see a stronger adherence to best practices. We have
> Effective C++ in our reading list, but we often (including myself) don't
> follow them. Sure, they are guidelines, but there should be a good
> reason to deviate from them in general. If not, then we should remove
> it from the reading list because it will add confusion to any new
> members of the project who are trying to adhere to them. Best practices
> (although not agreed upon by everyone) do improve the quality of the
> code and make us better programmers. There is a broad consensus behind
> most of what is espoused in Effective C++.
Sure. Unfortunally we might disagree on what the best practices are.
Personally I haven't read Effective C++ for a number of reasons, the
most important ones being the lack of time to do so and the free
availability of this book, since I don't consider ordering it from
abroad to be worth that much of my money. Either way I think it to be
proper that the books on http://devel.bibletime.info/wiki/Programming
are listed under the headline "Recommended books" rather than
"Compulsory books". We have not agreed to enforce the guidelines of any
of these books. And its rather of question of a broad consensus between
BT developers than the general C++ community or readers of a specific book.
> While we are talking about features to improve BT, let's also look at
> coding practices that can also improve BT. Let's encourage each other
> to use them. Let's teach them to each other. I have plenty to learn
> from you guys.
Agreed. This is definately something to discuss with all our C++
developers at some time, but it's out of scope of the feature-a-thon.
Perhaps we should gather all our C++ devs and also have a
refactor-a-thon to discuss such issues?
God bless!
Jaak
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (GNU/Linux)
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
nRWlNKYGfGMV4YVle2/t
=bbb8
-----END PGP SIGNATURE-----
More information about the bt-devel
mailing list