July 7, 2008
Delphi is Regions Free
Jeff Atwood complains with the use of hidden code regions. I fully agree. I use Delphi!
Jeff Atwood of Coding Horror fame complains with the use of hidden code regions: "The Problems with Code Folding". I fully agree. Using regions for hiding tens of lines of "not-so-great" code is not an approach I like. Inheritance is better than code generation. Better "componentization" can help reducing the actual code in your very own program. Truly, Delphi "hides" the form configuration in a separate DFM file, but this is quite different from long database-oriented code generation used in .NET.
For those who dislike regions, Delphi is a good choice!
10 Comments
Delphi is Regions Free
You know Delphi has something like:
{$REGION 'Ugly code inside - don't look you have been
warned I really mean it'}
On Error Resume Next
{$ENDREGION}
Comment by Daniel Lehmann
[http://www.visionarytools.com]
on July 7, 20:10
Delphi is Regions Free
I agree, even if the structure of delphi code is more reader oriented than other languages. Delphi uses Interface section and Implementation sections just to evidence the structure of the code. Regarding DFM files I think It is a better choice than Partial Class! Region can be use for long procedures body and could be automatic following coding indentation.Comment by bertoncini luca [http://sviluppoesviluppi.blogspoot.com] on July 7, 21:41
Delphi is Regions Free
I find that regions can be great to breaking code apart in to conceptual sections. Yes, most of the time I favour sub procedures, but sometimes it makes the code easier to maintain if you keep it as a cohesive whole, particularilly code that drives those sub-procedures. <setup region> <work region> <cleanup region> Works pretty nicely in that scenario. Could also be useful for grouping procedures by task... <ui procedures region> <data processing procedures region> that sort of thing. Regions can be useful. Using them to hide implementation issues, like how a form is designed, is less so. Microsoft agreed, which is why they have partial files now.Comment by Xepol on July 7, 22:25
Delphi is Regions Free
My Delphi code is not region free.
{$REGION 'xxx'}
.. code
{$ENDREGION}
I mainly use regions in the INTERFACE area of large
files.
I think there is a lot of information about code that
is hard to comprehensibly describe using only
comments. Here regions can sometimes help
* Describe which methods are used in a specific thread
* If a field/method is threadsafe
* Method belongs to a specific interface or group of
functionality.
* Take focus away from less important aspects (like
small internal private helper functions)
Even better would be to be able to highlight code
with a color pen (like in MS Word).
Comment by Martin Liesén on July 8, 01:20
Delphi is Regions Free
What I find truly bizarre is the fact that regions have to be explicit, when the language already contains blocks that form nice regions automatically. SOME of these are foldable automatically (class declaration, interface/implementation section, entire procedure bodies etc) but why not others? Visibility sections in a class, for example (fold Private, but not Public declarations), loop bodys, case and if statements, var declarations.... all of these things that form well defined blocks in the code should be foldable. But then I "grew up" on SQLWindows, where an application was a highly foldable outline down to a very fine degree. :DComment by Jolyon Smith [http://www.deltics.co.nz] on July 8, 02:32
Delphi is Regions Free
I find Regions one of the better features introduced since D7. I use regions like comments, with the advantage of being able to define up to where the comment applies. Most annoyingly, in Delphi, regions jump open at the slightest provocation! That should be fixed. Delphi supports local functions, a feature I have always used whenever a "closed concept" needs doing but which never gets used anywhere else (in other words, I'm not interested in the details). But in C#, local functions are not possible, so there I use regions copiously.Comment by delfi phan on July 8, 13:20
Delphi is Regions Free
I love the concept of regions. Especially if you have a large file, being able to hide part of the (done) code is great. However, the support for working with regions in Delphi and in Visual Studio is so poor that it's a nuisance at present time. There is no problem in having a lot of code in one file (sometimes you even need to have it there). But having all the code all of the time to work through makes that hard. If you could only show pieces of the code that are relevant to you at a certain time, that would make life a lot easier.Comment by Bart Roozendaal [http://blogs.sevensteps.com] on July 8, 15:33
Delphi is Regions Free
I sometimes use regions in Delphi for compiler-generated XML documentation, and I've written an IDE extension to hide/show them all with a keystroke (I usually don't want to see them in the editor). http://cc.codegear.com/Item.aspx?id=23955Comment by TOndrej [http://tondrej.blogspot.com] on July 9, 08:37
Delphi is Regions Free
Reading comments from the CODING HORROR's article make me think whether is possible or not to write a plug-in for delphi IDE that can automatically offer a fold up to the unstructured and messy code!!!Comment by ahmoy on July 9, 14:09
Post Your Comment
Click here for posting your feedback to this blog.
There are currently 0 pending (unapproved) messages.



Delphi is Regions Free
Delphi *isnt* 'free' of #regions. The feature is there for those that choose to abuse it ;-) {$region 'My stuff'} var i:integer; {$endregion} I agree with you and Jeff that they're not a good idea in practice....Comment by Roddy on July 7, 19:47