From: Peter Lind on
On 22 July 2010 15:27, Sebastian Ewert <seb2015(a)yahoo.de> wrote:
> Jay Blanchard wrote:
>> [snip]
>> Thats exacty the point. In my user class I have functions whitch return
>> object-lists of diffrent users or strings with html-form elements for
>> managing this user account.
>>
>> But if I put all these in a helper class I would anyway need to
>> implement the user object there, because of the other getter functions
>> (getUserName etc.) and the table-objects.
>>
>> I always thought this would be less effective, because I have more
>> instances of objects.
>> [/snip]
>>
>> Sounds like a major refactoring is in order, how reusable is your class?
>>
>> There is not enough room in this e-mail to cover the basic and
>> intermediate practices of OO design but it sounds like you may need to
>> re-think your design. Does this class do one thing and only one thing?
>> Does it do it really well?
>>
>
> Thanks for your advice. I know that I have to go much deeper into
> programm design. I would appreciate if you could send me some links with
> practial examples. I've only read some theoretical and very general
> stuff about it and cannot link everything to the real world.
>
>> Just from what I am reading I see that we have a user class
>> (getUserName) and that class returns lists of users? It sounds as if to
>> me that the user class talks not only about a single user, but perhaps
>> all of the users (object lists of different users).
>>
>
> That was just to generalize things. My user class only returns
> informations for one user. These informations are values of db-fields or
> generated html strings.
>
> But other classes like my message class have functions that return lists
> of instances of their own class. From what you've written I think its
> better to extract these functions into helper classes.
>
> But if you want to get all messages that refer to one specific msg its
> better to leave that function in the message class, isn't it? Or if you
> want to get a list with all friends of a specific user?(friends are not
> implemented yet)
>
>> On the surface that sounds like to classes to me, a user class and a
>> class to manipulate said users.
>>
>>
>
> But back to my first Problem:
>
> Is a class with 850 lines to long?
> If it is should I take all the html genarating functions and put them in
> a helper class?
> If I do so and there is no way to call those functions without
> initalizing the main user object, will there still be an increase of
> performance?
>

It's unlikely to cause you performance problems unless you've got a
huge amount of traffic - and then you could probably fix your problems
easier than refactoring classes.

Personal anecdote: I've worked on classes longer than 3K lines with no
marked performance problem. That doesn't mean I recommend it, though:
bigger classes are a pain to maintain as you loose overview of what's
in the class.

Regards
Peter

--
<hype>
WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
BeWelcome/Couchsurfing: Fake51
Twitter: http://twitter.com/kafe15
</hype>
From: Sebastian Ewert on
Peter Lind wrote:
>
> It's unlikely to cause you performance problems unless you've got a
> huge amount of traffic - and then you could probably fix your problems
> easier than refactoring classes.
>
> Personal anecdote: I've worked on classes longer than 3K lines with no
> marked performance problem. That doesn't mean I recommend it, though:
> bigger classes are a pain to maintain as you loose overview of what's
> in the class.
>
> Regards
> Peter
>
So you think that a length of 850 lines won't lead to a performance
problem?

The site is not online yet. I just wanted to know when to split a class
and if there are performance problems with to long classes.

Thanks,
Sebastian

From: Peter Lind on
On 22 July 2010 15:49, Sebastian Ewert <seb2015(a)yahoo.de> wrote:
> Peter Lind wrote:
>>
>> It's unlikely to cause you performance problems unless you've got a
>> huge amount of traffic - and then you could probably fix your problems
>> easier than refactoring classes.
>>
>> Personal anecdote: I've worked on classes longer than 3K lines with no
>> marked performance problem. That doesn't mean I recommend it, though:
>> bigger classes are a pain to maintain as you loose overview of what's
>> in the class.
>>
>> Regards
>> Peter
>>
> So you think that a length of 850 lines won't lead to a performance
> problem?
>
> The site is not online yet. I just wanted to know when to split a class
> and if there are performance problems with to long classes.

No, I don't think there will be problems. I also think the only way
you'll ever find out whether it *will* be a problem in your system is
by testing.

Regards
Peter

--
<hype>
WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
BeWelcome/Couchsurfing: Fake51
Twitter: http://twitter.com/kafe15
</hype>
From: "Jay Blanchard" on
[snip]
> So you think that a length of 850 lines won't lead to a performance
> problem?

No, I don't think there will be problems. I also think the only way
you'll ever find out whether it *will* be a problem in your system is
by testing.
[/snip]

^this to the max

[snip]
> The site is not online yet. I just wanted to know when to split a
class
> and if there are performance problems with to long classes.
[/snip]

I will try to find some good links for you but there is one book that I
can whole-heartedly recommend (I have all of my younger, um, less
experienced programmers read it);

Head First Object-Oriented Analysis and Design
http://oreilly.com/catalog/9780596008673/

It is a quick read, the exercises are fun and even though they focus on
Java the principles apply across al OOP languages.

As for splitting a class it doesn't matter the size of the class as long
as the class does one thing and does it really well. We have some very
large classes (remember - you are trying to describe an object and all
of the methods for that object) and some very small (under 25 lines
including comments) classes. The one characteristic that sticks out is
that they all do one thing really well.

http://www.wdvl.com/Authoring/Scripting/Tutorial/objects.html (I am
starting you a few pages into the article) is a good basic discussion of
OOP.

From: Sebastian Ewert on
> No, I don't think there will be problems. I also think the only way
> you'll ever find out whether it *will* be a problem in your system is
> by testing.

I've started some benchmarks with apachebench but the problem is I don't
have any benchmarks to compare with. And so I started looking for
something to change.

> I will try to find some good links for you but there is one book that I
> can whole-heartedly recommend (I have all of my younger, um, less
> experienced programmers read it);
>
> Head First Object-Oriented Analysis and Design
> http://oreilly.com/catalog/9780596008673/

Thanks to all. My question is answered and I have some lecture for the
next week.

Greets,
Sebastian