(message (Hello 'Steven)
(you :wrote :on '(Sat, 09 Dec 2006 20:02:06 +1100))
(
SDIt is a good thing that when Fred decides to stop contributing to an
SDopen source project (or leave the company), other people can read his
SDcode without having to learn his Uber-Special Custom Macro Extended
SDLanguage. Even if Fred's USCMEL ran 35% faster (and thus saved an
SDentire four seconds on an average run with typical data!) the five or
SDsix weeks of reduced programmer productivity when somebody else has to
SDmaintain his code outweighs that.
have you ever faced this problem?
it's not a problem at all.
and it's possible to write unmaintanable code in any langauge. for example,
Bram Cohen's BitTorrent (written in Python)
has a constructors with 21 positional parameters
class Rerequester:
def __init__(self, url, interval, sched, howmany, minpeers,
connect, externalsched, amount_left, up, down,
port, ip, myid, infohash, timeout, errorfunc, maxpeers,
doneflag,
upratefunc, downratefunc, ever_got_incomi ng):
and here's how it called:
rerequest = Rerequester(res ponse['announce'],
config['rerequest_inte rval'],
rawserver.add_t ask, connecter.how_m any_connections ,
config['min_peers'], encoder.start_c onnection,
rawserver.add_t ask, storagewrapper. get_amount_left ,
upmeasure.get_t otal, downmeasure.get _total, listen_port,
config['ip'], myid, infohash, config['http_timeout'], errorfunc,
config['max_initiate'], doneflag, upmeasure.get_r ate,
downmeasure.get _rate,
encoder.ever_go t_incoming)
i think it might be a bit hard to non-autist to remember order of parameters
in such constructor. (and it's not the only one such place in BitTorrent)
and that guy teaches us how to write maintanable code!
http://advogato.org/article/258.html
thus, you don't need macros to write unmaintanable code -- functions are
enough for this. and with macros you can make it more maintanable, actually
)
(With-best-regards '(Alex Mizrahi) :aka 'killer_storm)
"People who lust for the Feel of keys on their fingertips (c) Inity")