On Feb 11, 2011, at 12:00 AM, Steve Schveighoffer <[email protected]> wrote:





----- Original Message -----
From:Andrei Alexandrescu <[email protected]>
On 2/10/11 9:50 AM, Steve Schveighoffer wrote:
----- Original Message -----
From:Andrei Alexandrescu<[email protected]>
std.datetime has 34219 lines, which accounts for over 26% of the entire
Phobos
size. If Jonathan will (as he promised, I didn't forget :o)) fix
line sizes
to conform to 80 columns, then std.datetime will become 40961 lines, or
straight
30% of Phobos.

(This might have to do with the increase of "hello, world"
that was
noted by some people on the compiler list.)

I don't think so, but I cannot be sure. I'd say a full 75-90% of
std.datetime is unit tests or documentation. That shouldn't increase
the size of the lib, and certainly not by as much as it does.

It increases the size of the source that someone looking at the library must
navigate and absorb.

In case I wasn't clear: my concern is source size. I am now sorry I
mentioned library size, and twice so because I didn't verify the hypothesis.

OK, source size.  But still, the "relevant" source size is small.

All code is relevant.

The unit test source size is large, but who's reading all the unit tests?

People who look at the file.

Won't people skip over those?

Skipping is overhead, particularly when relevant content is drowned in a sea of chaff.



It is difficult to believe that a library needs that much unittests in terms of sheer size. The more I browse through std.datetime, the more firmly my hair is standing up on my head. It's most all large hand-unrolled loops. I am now sorry I voted for the library without having raised a flag at this very serious
problem. I didn't realize its size back then.

I guess I just don't see it as a problem. Source *size* doesn't concern me, quality does.


This goes without saying.

As for the amount of unittests, I feel like it's up to the developer to provide unit tests, and if he/she prefers to provide extra unit tests, that's fine.

Honest, I felt the same but datetime proved me exaggeration is harmful.

I think the number of unit tests should be greater than 0, no upper limit.

Again I used to think the same. I've since recanted.

And my unit tests are usually not looped because unit test failures usually give you a line that failed. If you loop them, then you're not sure what loop iteration failed.

I understand there are factors that contribute to that: date and time
manipulation is a bulky endeavor, there's a ton of unittests, and
there's a lot of documentation. But at a level I find it difficult
to digest
the fact that in sheer numbers date and time manipulation accounts for
30% of
Phobos. As a comparison point, std.algorithm does arguably a lot of
work, has
adequate documentation, and has unittest coverage at 95%, yet does all
that in a
"measly" 8027 lines.

Lines of file does not mean % of a library, especially when a large
portion of it is not compiled.  I think we need to stop this
prejudice against uncompiled LOC.  I fully support having unit tests
next to the code being tested, it's the whole point of the builtin
unit test system in D.

I am sorry, I disagree with discounting LOC. LOC is LOC. Compiled or uncompiled it is intellectual overhead. We need to write good code, code that we provide as living examples on how to write quality programs. Good code is not unrolled
loops. Well, except sometimes :o).

Sorry to also disagree :) Veritcal space isn't code, documentation is not code, unit tests are code, but only relevant if you are reviewing unit tests.

Vertical space is informational real estate.

LOC to me is the code that you have to read to understand how the library works.

LOC is loc, period.

unit tests don't qualify.
Most editors have folding ability or an ability to skip to the matching bracket.

Structured editors are definitely helpful. I don't want to /require/ one for viewing phobos.

This makes it irrelevant how many lines a unit tests occupies if you are skipping over it.

It is relevant to anyone not using an editor especially designed for d.


And if you aren't reviewing the library, you just want the API, you should be using the generated docs, which have nothing to do with LOC

Agreed. Again, Phobos sources will be studied and emulated by many. I don't want d to earn the reputation of a language requiring ten unittest lines per payload line.



-Steve




_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to