Sign in to follow this  
Followers 0
SirJohann

Hungarian Notation

7 posts in this topic

¡Hi! Well, this is just a little question. ¿Do you think Hungarian Notation is a good idea? I mean, I'm a really indecisive programmer, and sometimes this makes me hard to choose stuff like a name for a function, even the most easy thing. So, personal opinion, and pros vs cons of Hungarian Notation, what do you think?

¿And what about this "http://www.autoitscript.com/wiki/Best_coding_practices#Scopes_of_Variables"?


Codes codes codes.

Share this post


Link to post
Share on other sites



There are two different variants on Hungarian notation. Google it.

As long as you can safely determine what the variable should be used for from the name, it's fine.

For example if I had a variable called countFoo, I can be pretty sure it's an integer, referring to how a many foos have been counted.

Sometimes the type isn't all that relevant, for example with control ids, using $iOk wouldn't make sense. Some people use $cOk, but the best option would be $btnOk, as you know from the latter a lot more about what the variable means.

In a language like autoit, where we use variants, naming variables properly can make code a lot easier to maintain, by yourself and others.

If you see code like $iBar = "hello" alarm bells are ringing and it doesn't look right. Same with passing arguments to functions.

That's why it's a good habit to get into.

Share this post


Link to post
Share on other sites

There's lots of info you can include in a name if it is fit for the purpose. I am currently working on a project where notating container size helps to differentiate many similar variants. I have $sHex12 (range 000-FFF) and $sHex24 (range 000000-FFFFFF). I have function names like:

  _Hex24ToHex12 $sHex24)

  _Hex12ToBin12($sHex12)

  _Bin24ToHex12($sBin24 )
  _IdentifyHex12($sHex12)

I couldn't cope with the variety of variants I created if I didn't do something like this.

Share this post


Link to post
Share on other sites

Sometimes the type isn't all that relevant, for example with control ids, using $iOk wouldn't make sense. Some people use $cOk, but the best option would be $btnOk, as you know from the latter a lot more about what the variable means.

 

I actually use the GuiButton UDF, so $hOk, but this still have no sense. And I like what I've read...the kind, not the type. I googled and found a lot of information, and I think is really more useful $lstFolders than $iFolders for a list (just an example). So basically, I've been working on what is on the Wiki (Best coding practices), and now I think I'm wrong and I must be a little more "flexible".


Codes codes codes.

Share this post


Link to post
Share on other sites

I actually use the GuiButton UDF, so $hOk, but this still have no sense. And I like what I've read...the kind, not the type. I googled and found a lot of information, and I think is really more useful $lstFolders than $iFolders for a list (just an example). So basically, I've been working on what is on the Wiki (Best coding practices), and now I think I'm wrong and I must be a little more "flexible".

Like I said, in some cases there are more logical prefixes.

The best practices are correct in most cases though, for instance I would ALWAYS use $a, $p, $t, $tag, $o prefixes for those data types. $s and $f I use most of the time too. $f for flag is quite useful as you know it's either boolean, or you can use BitOR and BitAND on it to get flags.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Similar Content

    • Skysnake
      By Skysnake
      Scite comes up occasional, almost incidentally, in some support topics.  I have not found a "Scite" topic in the forums, so this is where I will start.  I have recently been using Scite intensively, specifically with a large project and I have certain issues.  I know that Scite is not an AutoIt product, but it is so closely integrated to the core release that it makes sense to raise issues and request support here.  If this is not the right please refer me to the right forum.
      Thx
       
      Skysnake
    • P3rsp3ctiv3
      By P3rsp3ctiv3
      Hello how can I send a {Enter} into the edit window ($cmd)? I tried it first with:
      GUICtrlSetData($cmd, "Line 1" + "{ENTER}")
      but it doesn´t work. Can someone help me please?
      #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GUIConstants.au3> $Admin = GUICreate("Admin", 234, 168, 192, 229, $GUI_SS_DEFAULT_GUI, BitOR($WS_EX_OVERLAPPEDWINDOW,$WS_EX_TRANSPARENT,$WS_EX_WINDOWEDGE)) GUISetBkColor(0xB4B4B4) $exit = GUICtrlCreateButton("Close", 160, 136, 65, 25) $cmd = GUICtrlCreateEdit("",0, 0, 225, 137, $ES_AUTOVSCROLL + $WS_VSCROLL) GUICtrlSetData(-1, "") GUICtrlSetFont(-1, 10, 400, 0, "Candara") GUICtrlSetBkColor(-1, 0xE3E3E3) $cmd_clear = GUICtrlCreateButton("Clear", 9, 136, 65, 25) GUISetState(@SW_SHOW) HotKeySet("{f1}", CMD_1) HotKeySet("{f2}", CMD_2) While 1 $msg = GUIGetMsg(1) Switch $msg[0] Case $GUI_EVENT_CLOSE Exit Case $exit GUIDelete($Admin) Exit EndSwitch WEnd Func CMD_1(); GUICtrlSetData($cmd, "Line 1" & "{ENTER}") GUICtrlSetData($cmd, "Line 2" & "{ENTER}") EndFunc Func CMD_2(); GUICtrlSetData($cmd, "Line 3" & "{ENTER}") GUICtrlSetData($cmd, "Line 4" & "{ENTER}") EndFunc
    • nacerbaaziz
      By nacerbaaziz
      hello
      please i need to link a progress bar with a time can you help me?
      e.g
      i want to set a progress bar for 10 sec
      am waiting for your answers
      thank you.
    • AdminC
      By AdminC
      #RequireAdmin
      #include <SendMessage.au3>
      #include <WinAPI.au3>
      #include <WindowsConstants.au3>
      #include <GDIPlus.au3>
      #include <GUIConstantsEx.au3>
      #include <WinAPIGdi.au3>
      #include <Array.au3>
      #include <WinAPIDiag.au3>
      $Imglocation = @ScriptDir&"\Image\testimg.bmp"
      _GDIPlus_Startup()
      Local $Bitmap = _GDIPlus_BitmapCreateFromFile($Imglocation)
      Local $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($Bitmap)
      Local $imgSize = _WinAPI_GetBitmapDimension($hBitmap)
      Local $imgBits = DllStructCreate('dword[' & ($imgSize.X * $imgSize.Y) & ']')
      _WinAPI_GetBitmapBits($hBitmap, DllStructGetSize($imgBits), DllStructGetPtr($imgBits))
      _WinAPI_DisplayStruct($imgBits)
      MsgBox(0, "", DllStructGetData($imgBits, 1, 1)) 
      _GDIPlus_Shutdown()
      DllstructGetData can't get data color B, G, R value. Who's know that? teach me plz
       
    • Miliardsto
      By Miliardsto
      Hello. Im trying to make my scripts safe - unnable to decompile. I search for obfuscators and other security methods but the search has come to nothing.
      Then one guy gave that idea below. If I rightly understood this idea lets we talk about example program with this secutiy method.
      Program have two parts, first is only login gui and the second part is the main program Second part (main program) is uploaded on ftp server lets say that on http://xxx/autoit/main_program.au3 So we have the first gui with login, we put correctly login and pass and this is the moment when code from http://xxx/autoit/main_program.au3 will be downloaded and executed Finally main program will be appear This is the similiar way like new games are protected by cracking.
      I have few questions in this moment about this:
      Is something like that even possible to do with the autoit? First part of program (login gui) must have somewhere given that link to download the rest of code - http://xxx/autoit/main_program.au3 to make it execute. As we know this first part of program is easy able to hack and retrieve this web url http://xxx/autoit/main_program.au3 where located is main part of program. Is the way to encrypt or secure it? If only code will be stored in .php we know it cannot be previewed. So it could for example get code from .php file instead of .au3 I know that methods works in other languages (I dont know exactly how) thats becouse I only speculates, maybe something may looks different in these solution? Other way would be compiling second part of code on web server (there are available web autoit servers) maybe this way is possible? Tell me anything U know about this ideas and if its even possible to achieve.
      Thanks for ur any response, advice or thoughts