<div dir="ltr"><div>I'm quite skeptical about designing language so that it support only good code. In my opinion inclusions / exclusions of features in the language should be based solely on their usefulness,</div><div> regardless of their role in bad code. Otherwise you end up crippling the language. Just think about it, no goto, restrictions on method length, forced indention / whitespace part of syntax, etc.</div><div>All very bad decisions, and do they work? No! Just show me one language, which do not have bad code!</div><div><br></div><div>Language is like any tool, more versatile the better, and the product made with it comes from the skills of the craftsman.</div><div><br></div><div><br></div><div>Jussi<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Dec 14, 2018 at 10:57 AM Christof Thalhofer <<a href="mailto:chrisml@deganius.de">chrisml@deganius.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Am 14.12.18 um 00:51 schrieb Benoît Minisini:<br>
<br>
> Or should I remove the possibility of declaring variables anywhere before?<br>
<br>
I would remove that.<br>
<br>
Option explicit and the decision to allow the declaration of variables<br>
only at top in my eyes are the main advantages of Gambas vs VB(A)<br>
concerning cleaner code.<br>
<br>
Basic seems to be an easy language for beginners, but – as always –<br>
allows a lot of very ugly code constructions.<br>
<br>
Because at the end code is always procedural, it can be distributed<br>
either over one long method or several different methods. The latter is<br>
usually much better, because small functions can be understood and<br>
debugged more easily. Also functions can be held stateless and so much<br>
more secure.<br>
<br>
Long method bodies for me are a clear sign for bad code.<br>
<br>
As I started programming long ago I did not understand the advantages of<br>
declaration of variables, and later – as I understood – I declared a lot<br>
of variables within the body of my methods. As I had to refactor that<br>
code mess later I found out that I packed a lot of functionality in<br>
loooong methods which were quite hard to understand.<br>
<br>
As I switched over to Gambas all these things did not work any more as<br>
the Gambas compiler complained about declarations within the body of<br>
these long methods. I had to refactor (bring all the variables to top)<br>
and found out that I did a lot of senseless things with variables:<br>
<br>
Often I packed content of one variable in a new one just because the<br>
name of the first variable did not fit into the current environment<br>
(scope) inside a long method. I did this, because I could declare the<br>
new variable within the body.<br>
<br>
I also tended to pack a lot of different functionality in one long<br>
method and I also had many headlines in my comments, each of which<br>
referred to a new section of the body that contained new functionality<br>
and new variables.<br>
<br>
Long Methods with a lot of functionality inside are bad. Really bad! You<br>
will find this out if you want to understand what you have written two<br>
weeks later. Or a year later.<br>
<br>
If variable declaration inside the body would be needed it is much<br>
better to think about it a while and then export the functionality to<br>
another method.<br>
<br>
If the declaration is at the top, at first it may be a bit inconvenient,<br>
but it will always remind you that it is much better to outsource<br>
functionality. And you will, simply because it will be more convenient.<br>
<br>
So this decision of Gambas leads to better code!<br>
<br>
I've put a lot of work into a lot of code and the older I get the<br>
smaller and clearer my methods become. I'm against making it easier for<br>
programmers to create huge functions full of spaghetti.<br>
<br>
<br>
Alles Gute<br>
<br>
Christof Thalhofer<br>
<br>
-- <br>
Dies ist keine Signatur<br>
<br>
<br>
----[ Gambas mailing-list is hosted by <a href="https://www.hostsharing.net" rel="noreferrer" target="_blank">https://www.hostsharing.net</a> ]----<br>
</blockquote></div>