When doing complicated programming in a Mma notebook I define several functions that I use in my higher level funtions, and I use a "Subsection" cell for each definition. For example I might write:
Cell["foo[x,y]", "Subsection"]
foo[x_,y_]:=(* complicated code *)
Cell["foo[x,y,z]", "Subsection"]
foo[x_,y_,z_]:=(* complicated code *)
Cell["goo[x,y]", "Subsection"]
goo[x_,y_]:=(* complicated code *)
Cell["UserIterface[x,y,z]", "Subsection"]
UserInterface[x_,y_,z_]:=DynamicModule[{a,b,c},
a=foo[x,y];
b=foo[x,y,z];
c=goo[x,y];
(* and so on *)
]
By using "Subsection" cells, I can close Subsections of code when I don't need to see them. However, I want to make my program a CDF that the CDF-Player can use. As far as I know, I have to use the following approach instead.
DynamicModule[{a,b,c},
a=foo[x,y];
b=foo[x,y,z];
c=goo[x,y];
(* and so on *),
Initialization:>{
foo[x_,y_]:=(* complicated code *);
foo[x_,y_,z_]:=(* complicated code *);
goo[x_,y_]:=(* complicated code *)}
]
This becomes unwieldly because I can't minimize the code that I don't need to see at any moment. Is there a better way to make a complicated CDF?