Since I'm almost broke and stressed out, I've been spending all my time
hacking on ktechlab... I just spent most of the morning figuring out how
to better to link pin currents to nodal currents...

Here's a bad pattern I came across in Component:

#############################
void Component::setNodalCurrents() {

        const ElementMapList::iterator end = m_elementMapList.end();
        for (ElementMapList::iterator it = m_elementMapList.begin(); it != end;
++it) {
                ElementMap m = (*it);

                for (int i = 0; i < 4; i++) {
                        if (m.n[i]) {
                        m.n[i]->mergeCurrent(m.e->readCurrent(i));
                        }
                }
        }
}
########################

See that? We have a loop here that basically manipulates a datastructure
in another class and then sends it another data structure
__FROM_THE_SAME_CLASS__. This should never happen, here's a better code:

###############################
void Component::setNodalCurrents() {

        const ElementMapList::iterator end = m_elementMapList.end();
        for (ElementMapList::iterator it = m_elementMapList.begin(); it != end;
++it) {
                (*it).mergeCurrents();
        }
}

void ElementMap::mergeCurrents()
{
        for (int i = 0; i < 4; i++) {
                if (n[i]) {
                        n[i]->mergeCurrent(e->readCurrent(i));
                }
        }
}
##############################

See, that's much better. ;)


-- 
New president: Here we go again...
Chemistry.com: A total rip-off.
Powers are not rights.


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Ktechlab-devel mailing list
Ktechlab-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ktechlab-devel

Reply via email to