[fpc-devel] "Blank slate" next version of FPC
giuliano.colla at fastwebnet.it
Wed Feb 20 19:28:29 CET 2019
Il 20/02/2019 19:11, Nikolai Zhubr ha scritto:
> Now it is getting even more curious. Admittedly I don't use C too much
> (and C++ even less so, approximately never), maybe that is why I do
> not understand your reasoning. Could you maybe give an example of such
> problematic inline declaration and its negative effect, in C++ at
> least? Honestly I can't imagine any.
Very easy: you read your code written some time before, or someone
else's code, you miss the inline declaration, because it's buried in the
code, and you mistake the variable with another one previously declared,
in the outer scope.
I have just met such a situation: I ported from C++ to Pascal an
algorithm for the computation of the kinematics of a Delta Robot, and I
was badly bitten.
In that case you are just dealing with X,Y,Z coordinates, and
Theta0,Theta1,and Theta2 angles, and you find, in the body of a
procedure, some X,Y,Z or Theta which have global scope, and some which
are just local to some smaller (but not too small) block and which are
redeclared inline. Rather hard to tell them apart.
Redeclaring inline an index I, which you'll be then using a lot of
times, is the best way to shoot you in the feet. Pascal encourages you
to use I,J,K at first, then ii,jj,kk etc.
Moreover, using a modern tool such as Lazarus, you never need to scroll
1000 lines to find a declaration: you just press alt+Up to go to the
declaration of the symbol over the cursor, and Ctrl+H to go back to the
line of code.
Keeping all declarations separated from code is just good programming
practice. Mixing declaration and code is bad programming practice, IMO,
and I appreciate Pascal for not supporting it.
Do not do to others as you would have them do to you.They might have different tastes.
More information about the fpc-devel