On Wed, 31 Jan 2001, Daniel A. Koepke wrote: >On Wed, 31 Jan 2001, George Greer wrote: > >> If you want variables in the middle of functions, then your functions >> are too fat. > >Maybe. But I can think of some places where it's desirable: > > switch (cond) { > case val1: > int my_var; /* illegal */ > . . . > break; > default: > . . . > } See line 2684 of db.c >or, as you said, long functions. But C sort of mandates the use of long >functions. If the original function (which is too fat) has a lot of state >and cannot be split-up reasonably, then breaking up the function into >helpers requires rather inconvenient state-passing mechanisms. I'd say that much state would usually be in a struct already. It's possible there are legitimate uses of that much state but you should be asking yourself hard questions at that point. >A better solution, of course, would be provided via a namespace or >environment, providing us with "closures" (where the environment of the >function is included with the function). Allowing the state to be >declared in an environment that is shared by the functions, rather than >inside the functions. Another way to do this, I guess, is with nested >functions. Portable state could be transcribed into a struct for passing around. It's sort of like the idea of declaring all your global variables inside a structure called 'g' so you can just do 'g.something'. That has the advantage of non-pollution and explicitly saying you're using a global variable. -- George Greer greerga@circlemud.org -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/03/01 PST