Better variable names

classic Classic list List threaded Threaded
25 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Better variable names

4D Tech mailing list
Here's one of those thoughts that I think to repost every few years.

Many of us use variable naming conventions to carry various bits of
information about what's in the variable/array. Like this format:

vtCity
vlWindow

Of course, no one uses that particular format as it's use will later
condemn you to the pits of perdition. Instead, people are probably using:

Module + Descriptor + Type

Like

Customer_City_t

"Module" being a basic language concept missing from the 4D language. It's
helpful to group resources into pseudo-modules to prevent pathological use
of global data. But I digress. What I wanted to say again was something
about type names: It can really improve the meaningfulness of a name if you
expand your concept of 'type'. Instead of limiting ourselves to 4D's
primitives, think of larger types. This can help in a few ways, the first
being readability:

$form_name_t
$tFormName
$form_name

It's a name, of course it's text, what else would it be? Why tack _t on
there? What does it add? It spends a couple of characters without adding
any information. "Name" carries both the base type and it's type in the
larger context of your code. The compiler can sort out types no matter what
their name. 4D's automatic variable being a case in point:

vRecNum

It's text. Of course it is. And it almost squeezes maximum value out of the
8 character name limit ;-)

Similar to form name, method name is an even better example:

$error_method_name_t

Okay, it's an error method. Well, we can validate method names - I'd prefer
to think of it as

$error_MethodName

To the 4D Compiler, it's a string. That's it. But it isn't. Not any string
will do, it has to be a string found in the list of project methods. Your
code makes more sense when you see it that way.

So, when the primitive type is obvious from context, why not use a 'type'
abbreviation that tells you more? Here are three different longints:

log_l
log_l
log_l

Oh. What about

log_docref
log_hlist
log_winref

That's a lot more information for no real cost.

I tend to use abbreviations like these as well as

_name

for internal names of stuff. Names are text in my universe, if you use
longints or something - you're on your own.

Oh, it's helpful to have a currency abbreviation if you apply standard
rounding to reals-that-are-currency.

I was reminded of all of this today as I'm doing some work with objects
where know that the variable is an object tells me close to nothing. I've
got an object that describes a 'recipient' of a callback from CALL WORKER
or CALL FORM. So, it's type is "recipient"

$subscriber_recipient
$callback_recipient

This is an object with a specific collection of attributes with rules.
There's a method to create a recipient, to validate a recipient (make sure
the window/method exists, etc.) Recipients can be passed around for various
purposes.

Right, back to your regular discussions....
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
Hi David,

Interesting to see how our variable naming has changed over the years.

Thanks for your excellent post.

I’ll just add one little bit if I may.

Having worked in the javascript environment for quite some time now, I tend to leave out the “_” wherever I possibly can and use CamelCase instead.

so for me

$subscriber_recipient

becomes

$subscriberRecipient.

Somehow I find the latter easier to read.

Also I tend to have all my modules in components these days so I have been leaving off the module name. But I’ve recently found a flaw in this approach. Often I want to bring my component code back into the host database to make it easier for testing and development. So bingo when I do, I have naming conflicts all over the place. As a result, I’m going back to what I should have done all along – add the module name to the variable!!

Best regards
Chris Curnow
4cast.com.au<http://4cast.com.au>



On 24 Feb. 2017, at 2:29 pm, David Adams via 4D_Tech <[hidden email]<mailto:[hidden email]>> wrote:


**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
> Having worked in the javascript environment for quite some time now, I
tend to leave out the “_” wherever > I possibly can and use CamelCase
instead.

> so for me

> $subscriber_recipient

> becomes

> $subscriberRecipient.

> Somehow I find the latter easier to read.

You and most people, I believe. I've got it in the back of my mind that
there's been some cog-sci research proving this very point. I tend to go
with the idiom of what I'm in, so my JS names don't look entirely like my
4D names. Also in JS, there seems to be a widespread allergy to parameter
lists while in 4D they're pretty normal.

> ...components

I've heard of those. I'll try again in V16.

And while we're on the subject of names, the 31 character limit is a daily
source of pain for me in 4D. And I end up with crappier names than I would
like all the same. Please vote for this (latest version of a long-standing)
feature request:

http://forums.4d.fr/Post/EN/18946884/1/18946885

Does anyone know, is there an actual 'vote' mechanism, or are you just
supposed to put down a +1 post?
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list

it is all in the stars David  :)


>
> Does anyone know, is there an actual 'vote' mechanism, or are you just
> supposed to put down a +1 post?
------------
Hell is other people
     Jean-Paul Sartre
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
In reply to this post by 4D Tech mailing list
quite interesting read, thanks.

The value of sensible naming never shows more strongly when you have to work with OPC (Other Peoples Code) and find generic variables like S_1 or AR1 that are used in changing roles throughout the code and are an incredible pain to debug, or even replace…

Concerning the descriptor, I have found it more useful to have that up front, spearated by underscore:

$t_myText
$al_myLongArray
o_processObject

etc.
Why?
3 reasons:
- when typing and you need a specific local text variable you already have, just type the prefix and the editor will show you all text variables you already have.
- I can easily check for compiler typing errors by searching (for example) all C_LONGINT in compiler declarations where the variable does not start with  l_
and, much more import as I am lazy:
I have a macro and method that automatically declares all my locals in a method and puts the block on top.
Easier to recognize the type if you just need to match a starting pattern…

Cheers

Alex

> Am 24.02.2017 um 04:29 schrieb David Adams via 4D_Tech <[hidden email]>:
>
> Here's one of those thoughts that I think to repost every few years.
>
> Many of us use variable naming conventions to carry various bits of
> information about what's in the variable/array. Like this format:
>
> vtCity
> vlWindow
>
> Of course, no one uses that particular format as it's use will later
> condemn you to the pits of perdition. Instead, people are probably using:
>
> Module + Descriptor + Type
>
> Like
>
> Customer_City_t
>
> "Module" being a basic language concept missing from the 4D language. It's
> helpful to group resources into pseudo-modules to prevent pathological use
> of global data. But I digress. What I wanted to say again was something
> about type names: It can really improve the meaningfulness of a name if you
> expand your concept of 'type'. Instead of limiting ourselves to 4D's
> primitives, think of larger types. This can help in a few ways, the first
> being readability:
>
> $form_name_t
> $tFormName
> $form_name
>
> It's a name, of course it's text, what else would it be? Why tack _t on
> there? What does it add? It spends a couple of characters without adding
> any information. "Name" carries both the base type and it's type in the
> larger context of your code. The compiler can sort out types no matter what
> their name. 4D's automatic variable being a case in point:
>
> vRecNum
>
> It's text. Of course it is. And it almost squeezes maximum value out of the
> 8 character name limit ;-)
>
> Similar to form name, method name is an even better example:
>
> $error_method_name_t
>
> Okay, it's an error method. Well, we can validate method names - I'd prefer
> to think of it as
>
> $error_MethodName
>
> To the 4D Compiler, it's a string. That's it. But it isn't. Not any string
> will do, it has to be a string found in the list of project methods. Your
> code makes more sense when you see it that way.
>
> So, when the primitive type is obvious from context, why not use a 'type'
> abbreviation that tells you more? Here are three different longints:
>
> log_l
> log_l
> log_l
>
> Oh. What about
>
> log_docref
> log_hlist
> log_winref
>
> That's a lot more information for no real cost.
>
> I tend to use abbreviations like these as well as
>
> _name
>
> for internal names of stuff. Names are text in my universe, if you use
> longints or something - you're on your own.
>
> Oh, it's helpful to have a currency abbreviation if you apply standard
> rounding to reals-that-are-currency.
>
> I was reminded of all of this today as I'm doing some work with objects
> where know that the variable is an object tells me close to nothing. I've
> got an object that describes a 'recipient' of a callback from CALL WORKER
> or CALL FORM. So, it's type is "recipient"
>
> $subscriber_recipient
> $callback_recipient
>
> This is an object with a specific collection of attributes with rules.
> There's a method to create a recipient, to validate a recipient (make sure
> the window/method exists, etc.) Recipients can be passed around for various
> purposes.
>
> Right, back to your regular discussions....
> **********************************************************************
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:[hidden email]
> **********************************************************************

**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list

> Le 24 févr. 2017 à 09:12, Herr Alexander Heintz via 4D_Tech <[hidden email]> a écrit :
>
> [...]
> Concerning the descriptor, I have found it more useful to have that up front, spearated by underscore:
>
> $t_myText
> $al_myLongArray
> o_processObject
>
> etc.
> Why?
> 3 reasons:
> - when typing and you need a specific local text variable you already have, just type the prefix and the editor will show you all text variables you already have.
> - I can easily check for compiler typing errors by searching (for example) all C_LONGINT in compiler declarations where the variable does not start with  l_
> and, much more import as I am lazy:
> I have a macro and method that automatically declares all my locals in a method and puts the block on top.
> Easier to recognize the type if you just need to match a starting pattern…

In 4d langage I consider type in the name is mandatory, some don't. In js I don't, BTW.

I used to put type at start but since ~10 years I prefer at end:
  $table_p = table pointer
  $table_l = table number
  $table_al = array of table numbers
  $table_ap = array of table pointers
  $person_o = object describing a person
  $LBsColumn_ao = object array describing columns in a selection listbox
  $csvData_a2t = 2d text array of data from a comma separated value document
  etc.
Except first, other reasons you mention are kept (I use 4d Pop to grab and declare variables). But most of the time during code input my "entry point" is the variable purpose (=humanly significant part of the name: table, person, csvdata, etc). And when I read i'm also concentrated on that part. The type is like some tail I'll look at if the head of the beast is not enough to identify it at first sight.

I like short names, too: more letters=long lines, and long lines are difficult to read for me.

It seems there 3 kind of 4d developers, mostImportantThingIsType vs purposeAtLeft vs readDeclarationsYouStupid.

If I was born arab, reading from left to right, would I do the same?

Am I insane because I start by search/replace variable names prior to understand some code from another?

...

Is order so important, finally:
<http://www.mrc-cbu.cam.ac.uk/people/matt-davis/cmabridge/>  ;-)

--
Arnaud de Montard


**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
> Am I insane because I start by search/replace variable names prior
> to understand some code from another?

If you're insane, I'm insane with you. I can't really "read" code. Maybe
some people can. I can read methods, but visualizing how they fit together
and work? That's harder. I like to dig in, rename things, move them around
a bit and get my hands dirty. I work on a backup and tend to throw the
results of my changes away, but that's how I come to grips with unfamiliar
code a lot of the time.

By the way, the only reason I use a module prefix is so that names sort in
the Explorer. I wouldn't use them at all if we had any sort of namespace
mechanism in 4D. Within methods, only have descriptor_type. What I was
saying earlier is that I've been very happy expanding my notion of "type"
past 4D's primitives. Sometimes, that's all I've got - it's a real of some
kind. Fine. But if it's currency, that's a better piece of information -
more specific and pretty darn helpful.

I picked the idea up from Code Complete years ago, for those that haven't
read it lately.
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
In reply to this post by 4D Tech mailing list
I hate working on other developer's code where I am expected to guess the
type by its use and context. It is a waste of my time and therefore a waste
of my client's money.

It is often possible to correct/optimise code without understanding the
context. I was a photographer in a previous life, and I often look for
variations in the 'look' of code to discover anomalies.

I think Module + Descriptor + Type is perfect for method names, but not for
variables.


On Fri, Feb 24, 2017 at 4:29 AM, David Adams via 4D_Tech <
[hidden email]> wrote:

> Here's one of those thoughts that I think to repost every few years.
>
>
> Of course, no one uses that particular format as it's use will later
> condemn you to the pits of perdition. Instead, people are probably using:
>
> Module + Descriptor + Type
>
> Like
>
> Customer_City_t
>
> --
Jim Dorrance
[hidden email]
[hidden email]
www.4d.dorrance.eu

PS: If you know of anyone that needs an experienced 4D programmer to add
energy and experience to their team, please let me know. I have
experience in many areas. Reasonable rates. Remote or Paris only.
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
In reply to this post by 4D Tech mailing list
Yes! And let's not overlook the ever popular series of process arrays named
aTemp1, aTemp2, aTemp3 ...  even better because they are referenced by
pointers referring to some other pointer initialized - someplace.

(Deep breath)

Ok, thanks for that moment.

On Fri, Feb 24, 2017 at 12:12 AM, Herr Alexander Heintz via 4D_Tech <
[hidden email]> wrote:

> quite interesting read, thanks.
>
> The value of sensible naming never shows more strongly when you have to
> work with OPC (Other Peoples Code) and find generic variables like S_1 or
> AR1 that are used in changing roles throughout the code and are an
> incredible pain to debug, or even replace…
>

--
Kirk Brooks
San Francisco, CA
=======================
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
One of my favorites, seen in the wild:

<>A
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

RE: Better variable names

4D Tech mailing list
In reply to this post by 4D Tech mailing list
> Does anyone know, is there an actual 'vote' mechanism, or are you just supposed to put down a +1 post?

This tech tip should help explain the difference between +1 and voting:

Tech Tip: How to vote for a feature request
http://kb.4d.com/assetid=76726

-Tim



**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
In reply to this post by 4D Tech mailing list
On Fri, Feb 24, 2017 at 11:11 PM, Jim Dorrance via 4D_Tech <
[hidden email]> wrote:

> I think Module + Descriptor + Type is perfect for method names, but not
for variables.

Hey Jim, thanks for adding your thoughts. I find Module + Descriptor + Type
helpful for process and IP vars and arrays in 4D. I've seen plenty of
databases with arrays like these:

atNames

20+ years ago I think that I even published a tech note with conventions
and names like this. Well, we only had 8/11 characters...something like
that. And, yes, my naming conventions are the best and all other
conventions are Unclean and Must Be Shunned. Then again, I've changed my
conventions substantially several times down the years and they continue to
evolve. I'm always stupider in the past...really, what _was_ that guy
thinking? Sheesh.

Anyway, atNames, okay, I get that its a text array and that it stores
names. What kind of names? Pets? Children? Businesses? Favorite movies?
Countries? Customers? Planets? Birds? Ingredients? Simpsons characters?

Pet_Names_at
Country_Names_at
Company_Names_at
...etc.

Specifying the module makes it a whole lot easier to avoid having unrelated
code stomp on each other's data. Also, it makes figuring out the code
substantially easier. Those are my main reasons. Within a method, I don't
use module names for locals as you already know where you are.

For the record, everything I've got is in a module. Everything. I don't
have a "utility" module - it's a cheat most of the time. What kind of
"utility" is it? Put it in there:

Text_
DateTime_
...etc.

I do have a System_ module, but it's pretty small. Do I have modules with
only one or two methods. Yes.

And since I, despite my repeated pledges, brought up variable naming again
(mea culpa), I might as well add:

* One of the most substantial benefit of conventions is that you get a sort
of mental "muscle memory" when naming and looking for things. As such, it's
not worth changing without good reason...even for a "better" solution. Then
again, change is supposed to be good for your brain...so perhaps that's a
good reason.

* If you work in a team, work as a team. If the team wants to follow a set
of conventions universally, suck it up and get on board. It's better to go
along with the group than to insist on your "better" approach. (Well, it's
fair to make your case once, but then move on with your life.) With that
said, I've seen teams where it was easy to know who originally wrote what
just by how things are named. Some teams don't mind that. Personally, I
don't care as long as the person includes enough information in the name
and doesn't use data pathologically. Here are a few sorts of data pathology
common in 4D code:

-- Globals: I don't mean scope, I mean use. The same data is used all over
the place, so there's no real way to know where it "belongs", where it's
set or how it's changed. There's simply no way to make code like this
reliable, extensible, maintainable, or testable. It's bad in any language.
Getters/setters can ameliorate the problem to a degree (recommended),
depending on how they're used...but aren't a universal panacea.

Tip:V16 workers offer us some radical new possibilities with the language.
You can maintain a set of private variables/arrays in there that are only
accessible through a callback. It's a lot more like a "closure" than I ever
expected to see in 4D. Not sure if that's one of the goals (no mention of
anything like that), but it's a natural result of using workers in a
particular way. Reminder: GIVE UP ON SET/GET PROCESS VARIABLE and VARIABLE
TO VARIABLE, particularly with workers. These commands should never been
added to the language and are *very* hard (and expensive) to use safely for
dynamic data. Vow to get rid of them in your V16+ work. I don't have them
in any of my code. Ever. (I do accept that there are a narrow set of cases
where, properly used, they were handy for quick data swaps from the server,
but we've got better tools now.)

-- Brittle execution paths: Things break (hard) when an expected execution
path is not followed exactly. This is a *sure sign* that you've got a
pathological use of data. It's not that hard to use data without a
startup/start process initialization routine or without calling a ton of
support code in the right order.

That's a couple. We've all seen it...I'd expect that we've all done it.

* We need more than 31 characters...and now I know how to vote for feature
requests (thanks again to Tim Penner):

Raise the 31 character name limit on methods
http://forums.4d.fr/Post/EN/18946884/1/18946885

Need more votes. It's currently on 4/4 stars with 28 votes.

And, while you're there:
Automatically Associate C_Object With Form Objects (and the Window)
http://forums.4d.fr/Post/EN/19051683/1/19051684

Currently on 4/4 with 19 votes. Given this is the best feature request for
the language I can remember seeing in years, it needs more votes.
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
In reply to this post by 4D Tech mailing list

> Le 24 févr. 2017 à 23:18, Timothy Penner via 4D_Tech <[hidden email]> a écrit :
>
>> Does anyone know, is there an actual 'vote' mechanism, or are you just supposed to put down a +1 post?
>
> This tech tip should help explain the difference between +1 and voting:
>
> Tech Tip: How to vote for a feature request
> http://kb.4d.com/assetid=76726

Vote on 4DBB exists since years now. I wonder about a so obvious vote system than a tech tip is necessary to explain how it works.

BTW, giving a star to mean "bad" sounds strange to me, I'd use something more explicit to "push up or down". Or we could have more fun using some emoticons like 💩💀👎💣🔫

--
Arnaud de Montard


**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
> I wonder about a so obvious vote system than a tech tip is necessary to
explain how it works.

Easy: Documentation is the go to patch for software with usability problems.

About a zillion years I went to a conference and Jakob Nielson gave a 4
hour speech. This was when he was first building his brand. He displayed a
photograph of a busy street scene and said "find the tiger." No one could
see it. Even after a few minutes. Then he took out a laser pointer and lit
up a bit of the photograph where there was a tiger on a billboard. It
wasn't hidden, it wasn't small, it wasn't at all easy to spot. But once you
had see it, there was no way to "unsee it". You knew where it was.

His point was about basic human cognition (usability is an application of
cognitive psychology and many methods are shared.) A side point was about
the difference between "intuitive" and "learnable."

Once you know where the voting feature is on the Forums, there's very
little chance that you will forget. Before that, it's very easy to miss. I
didn't even know if it *was* a feature, of it it was more about the length
of the threads. The screens on the forums are...busy. (There's no way I'm
going to try that search system, for example.) It took me over  a week to
sort out how to make text bold. I have avoided the forums for years because of
problems with basic functionality and usability. I've started using them a
bit, but I still find it a struggle to figure out how to start a thread.

So now you know why the tech tip that Tim kindly pointed out was necessary.

On Sun, Feb 26, 2017 at 1:35 AM, Arnaud de Montard via 4D_Tech <
[hidden email]> wrote:

>
> > Le 24 févr. 2017 à 23:18, Timothy Penner via 4D_Tech <
> [hidden email]> a écrit :
> >
> >> Does anyone know, is there an actual 'vote' mechanism, or are you just
> supposed to put down a +1 post?
> >
> > This tech tip should help explain the difference between +1 and voting:
> >
> > Tech Tip: How to vote for a feature request
> > http://kb.4d.com/assetid=76726
>
> Vote on 4DBB exists since years now. I wonder about a so obvious vote
> system than a tech tip is necessary to explain how it works.
>
> BTW, giving a star to mean "bad" sounds strange to me, I'd use something
> more explicit to "push up or down". Or we could have more fun using some
> emoticons like 💩💀👎💣🔫
>
> --
> Arnaud de Montard
>
>
> **********************************************************************
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:[hidden email]
> **********************************************************************
>
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list

> Le 25 févr. 2017 à 22:58, David Adams via 4D_Tech <[hidden email]> a écrit :
>
>
> Easy: Documentation is the go to patch for software with usability problems.
> [...]


See php:
<https://secure.php.net/manual/en/language.expressions.php>
I think anyone visiting it the first time (as me) will see (not find…) that there is users contributions, how to add one, how to vote in a pair of minutes. Where to download last version. Change log of this version. Etc.
Back to 4D:
I wonder how many 4d developers know they can contribute to the doc.  


> There's no way I'm going to try that search system, for example


Some search options are visible when you hoover the magnifying glass on the left of input, it "gives the idea"; it works.


> It took me over a week to sort out how to make text bold

Be happy, it took me months. Help is here:
<http://forums.4d.fr/Post/EN/321234/1/321234#7314712>
<http://forums.4d.fr/Post/FR/499481/0/0/>
But most useful tools are in the yellow zone above the message.

That said, on inug I'm very frustrated because I can't add picture, show code correctly, add a link, and so on.

--
Arnaud de Montard





**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
is there a forum feature request for these?
:)


>
> That said, on inug I'm very frustrated because I can't add picture,
> show code correctly, add a link, and so on.
------------
Hell is other people
     Jean-Paul Sartre
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
In reply to this post by 4D Tech mailing list
On Sun, Feb 26, 2017 at 11:27 AM, Arnaud de Montard via 4D_Tech <
[hidden email]> wrote:

Thanks for the links.

I've spent more than enough time criticizing the forums down the years to
continue doing so. I was jus trying to say that it's not weird that I
couldn't figure out how parts of it work.

Since 4D officially takes no notice of the NUG, I'm trying putting comments
and requests on the Forums. There they can be unofficially ignored ;-)
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

RE: Better variable names

4D Tech mailing list
In reply to this post by 4D Tech mailing list
> This tech tip should help explain the difference between +1 and voting:
>
> Tech Tip: How to vote for a feature request
> http://kb.4d.com/assetid=76726 <http://kb.4d.com/assetid=76726>
If doesn’t explain the list of users I had to select one from in order to precede with the vote (it appeared after I clicked a star),
I think the users were the currently logged-in members of the forum (except my name was omitted).
I had no idea what that was about so gave up trying to log a vote,
:-(
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list
In reply to this post by 4D Tech mailing list
I find the forums a throw back to - what, late '90s BBs or Compuserve. I
know a lot of you remember Compuserve. We complain about the forums and get
told that we're just not doing it correctly. This has been going on for
years. If it were actually true we would all be over on the forums because
we're actually pretty smart and would figure out the forums are actually
good. But we aren't because the forum interface isn't very good and telling
everyone it is doesn't actually make it so.

No one around here would consider such a site a success when you have to
write a tech note to explain how to use it.

I mean really.

On Sat, Feb 25, 2017 at 6:44 PM, David Adams via 4D_Tech <
[hidden email]> wrote:

> On Sun, Feb 26, 2017 at 11:27 AM, Arnaud de Montard via 4D_Tech <
> [hidden email]> wrote:
>
> Thanks for the links.
>
> I've spent more than enough time criticizing the forums down the years to
> continue doing so. I was jus trying to say that it's not weird that I
> couldn't figure out how parts of it work.
>
> Since 4D officially takes no notice of the NUG, I'm trying putting comments
> and requests on the Forums. There they can be unofficially ignored ;-)
>
> --
Kirk Brooks
San Francisco, CA
=======================
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
Reply | Threaded
Open this post in threaded view
|

Re: Better variable names

4D Tech mailing list

> Le 26 févr. 2017 à 08:25, Kirk Brooks via 4D_Tech <[hidden email]> a écrit :
>
> [...] We complain about the forums and get
> told that we're just not doing it correctly. This has been going on for
> years. If it were actually true we would all be over on the forums because
> we're actually pretty smart and would figure out the forums are actually
> good[...]

I use this mailing list because I like to practice my poor english and most english contributors are here, but if they were more on 4dbb I wouldn't. 4dbb is made with 4d by 4d people: it's good for 4d-the-product we use. Censorship is inconspicuous. I know some of the authors, I've seen once a small part of the hidden part of the iceberg, I use it daily: despite many shortcomings, they made a great job. IMHO.

--
Arnaud de Montard


**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[hidden email]
**********************************************************************
12