foreach

monarch_dodra via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 17 00:59:22 PDT 2014


On Monday, 16 June 2014 at 21:47:22 UTC, H. S. Teoh via 
Digitalmars-d wrote:
> On Mon, Jun 16, 2014 at 01:31:21PM -0700, H. S. Teoh via 
> Digitalmars-d wrote:
>> On Mon, Jun 16, 2014 at 06:37:56PM +0000, Wyatt via 
>> Digitalmars-d wrote:
>> > On Monday, 16 June 2014 at 17:52:29 UTC, H. S. Teoh via 
>> > Digitalmars-d wrote:
>> [...]
>> > >Or, on the flip side, functions with 10-15 parameters, each 
>> > >of which
>> > >influences which subset of the others actually have any 
>> > >effect.
>> > >
>> > Tame.  Gaze upon true horror:
>> > 
>> > #2  0x0809082c in stnz_sutrs (rec=0x461d550,
>> > app_context_arg=0x461dfd0, attribute_set=0x0, 
>> > answer_complete=1,
>> > present_type=2, cgm=0, graphics=0, highlight_option=1,
>> > records_requested=1, current_field=76, num_fields=88,
>> > field=0x462a160, ans=0x0, database=0x45e0628 "REGISTRY",
>> > esn_list=0x461dd98, issue_break=0x461d754, callback=0x806f82d
>> > <display_next_answer>, callback_arg=0x461d668,
>> > field_callback=0x8087bff <field_formatter>,
>> > field_callback_arg=0x462adb8, callback_scheduled=0xfef92ac0, 
>> > dg=0,
>> > dp=5, line_length=100) at stnz_sutrs.c:399
>> 
>> Whoa. I think I need therapy after reading this...
> [...]
>
> Aaarrggghh... I thought that was bad, and then I saw this:
>
> 	http://c2.com/cgi/wiki?BadCode
>
> (Search for "SUBROUTINE FEMA" on that page. It's a function 
> with 292
> parameters(!).)
>
>
> T

We recently did some cleanup in our organization in regards to a 
couple functions whose argument counts were are too damn high: We 
created a helper-class which actually contains the arguments. So 
the calls now look like:

Arguments arg;
arg.InputSize = 5;
arg.method = ASSSENDING;
fun(arg);

It might look like bloat initialy, but it makes things *WORLDS* 
easier. For starters, the arguments are *all* named, even at call 
sight. Second, any un-specified argument has its default value, 
even if there are other arguments you want to modify later.

That said, there might have been better approaches to not fall 
into this trap in the first place, but that's an (arguably) low 
cost sanity patch.


More information about the Digitalmars-d mailing list