Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Как насчёт стандарта обявления переменных? Добавлено: 19.06.10 14:20  

Автор вопроса:  Филюс | Web-сайт: filyus.ru | ICQ: 7116156 
В VB 6 есть очень полезная штука, помогающая избегать лишних объвлений. Предлагаю договориться в назначении определённых буковок для самых часто используемых типов. Примерно так:
DefBool B: DefByte C: DefDbl D: DefLng I: DefLng J: DefLng K
DefLng N: DefStr S: DefDate T: DefInt W

Ответить

  Ответы Всего ответов: 24  

Номер ответа: 1
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #1
Добавлено: 19.06.10 15:31
http://www.google.ru/search?hl=ru&newwindow=1&client=opera&hs=Xtw&rls=ru&q=%D0%A1%D0%BE%D0%B3%D0%BB%D0%B0%D1%88%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BF%D0%BE+%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E+%D0%BA%D0%BE%D0%B4%D0%B0&aq=f&aqi=&aql=&oq=&gs_rfai=

По ходу ты решил сделать свой "+1", смекаешь?

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 19.06.10 16:11
Предлагаю договориться вверху каждого модуля писать Option Explicit таки)

Ответить

Номер ответа: 3
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #3
Добавлено: 19.06.10 16:57
Бо( C# негодуэ

Ответить

Номер ответа: 4
Автор ответа:
 Филюс



ICQ: 7116156 

Вопросов: 3
Ответов: 14
 Web-сайт: filyus.ru
 Профиль | | #4
Добавлено: 19.06.10 18:12
Существуют рекомендации для префиксов, но в них обычно указывают использовать несколько букв (например, dt для типа Date) или букву l для типа Long (l слишком похожа на 1, поэтому её использование нежелательно), а есть и такая рекомендация, в которой написано использовать d как для типа Double, так и для Date. В def же можно указывать только одну букву и, естественно, разную для каждого типа.

  1. http://support.microsoft.com/kb/110264
  2. INFO: Microsoft Consulting Services Naming Conventions for Visual Basic
  3. Prefix    Converged    Variable Use         Data Type  Suffix
  4. --------------------------------------------------------------------------
  5. b         bln          Boolean              Integer    %
  6. c         cur          Currency - 64 bits   Currency   @
  7. d         dbl          Double - 64 bit      Double     #
  8.                        signed quantity
  9. dt        dat          Date and Time        Variant
  10. e         err          Error
  11. f         sng          Float/Single - 32    Single     !
  12.                        bit signed
  13.                        floating point
  14. h                      Handle               Integer    %
  15. i                      Index                Integer    %
  16. l         lng          Long - 32 bit        Long       &
  17.                        signed quantity
  18. n         int          Number/Counter       Integer    %
  19. s         str          String               String     $
  20. u                      Unsigned - 16 bit    Long       &
  21.                        unsigned quantity
  22.           udt          User-defined type
  23. vnt       vnt          Variant              Variant
  24. a                      Array
  25.  
  26. Scope and Usage Prefixes:
  27.  
  28. Prefix         Description
  29. g              Global
  30. m              Local to module or form
  31. st             Static variable
  32. (no prefix)    Non-static variable, prefix local to procedure
  33. v              Variable passed by value (local to a routine)
  34. r              Variable passed by reference (local to a routine)
  35.  
  36.  
  37. MSDN (Visual Basic Concepts: Constant and Variable Naming Conventions)
  38. Boolean             bln  blnFound
  39. Byte                byt  bytRasterData
  40. Collection object   col  colWidgets
  41. Currency            cur  curRevenue
  42. Date (Time)         dtm  dtmStart
  43. Double              dbl  dblTolerance
  44. Error               err  errOrderNum
  45. Integer             int  intQuantity
  46. Long                lng  lngDistance
  47. Object              obj  objCurrent
  48. Single              sng  sngAverage
  49. String              str  strFName
  50. User-defined type   udt  udtEmployee
  51. Variant             vnt  vntCheckSum
  52.  
  53. Global              g     gstrUserName
  54. Module-level        m     mblnCalcInProgress
  55. Local to procedure  None  dblVelocity
  56.  
  57.  
  58. http://xprogramming.com.ua/codeconvcsharp.php
  59. bool   System.Boolean  b
  60. byte System.Byte by
  61. char System.Char c
  62. decimal System.Decimal dc
  63. double System.Double d
  64. float System.Single f
  65. int System.Int32 i
  66. long System.Int64 l
  67. object System.Object o
  68. short System.Int16 sh
  69. string System.String s
  70.  
  71.  
  72. http://www.compdoc.ru/prog/basic/code-style-on-vb/
  73.  
  74. s или sz - переменная типа String
  75. b - Byte или Boolean
  76. i - Integer
  77. l - Long
  78. d - Double
  79. s - Single
  80. d - Date
  81. o_ - объект
  82. e - перечислимый тип (Enum)
  83. g_ - глобальная переменная (Public)
  84. m_ или loc_ - локальная переменная (Private)

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 19.06.10 18:38
Нельзя начинать переменные с цифр, так что l - однозначно эль.
Нет такого понятия как лишние объявления переменных. Зато есть правило называть переменны так, чтобы это отражало их суть, а одна буква явно этого не сделает. И есть дурная практика вообще не объявлять ничего, не представляю как можно при этом написать большую программу.

Ответить

Номер ответа: 6
Автор ответа:
 Филюс



ICQ: 7116156 

Вопросов: 3
Ответов: 14
 Web-сайт: filyus.ru
 Профиль | | #6
Добавлено: 19.06.10 18:44
Ну вот поймите, что тут написано:
l = l1
l2 = 1 + l3 - l4

Человек - существо разумное, и по одной букве всё поймёт. К тому же в def нельзя (!) использовать несколько букв, да и краткость - сестра таланта.

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 19.06.10 19:58
Макконнелла на вас нет...

Ответить

Номер ответа: 8
Автор ответа:
 Филюс



ICQ: 7116156 

Вопросов: 3
Ответов: 14
 Web-сайт: filyus.ru
 Профиль | | #8
Добавлено: 19.06.10 21:08
Мда... Маконелл советует вместо цифр в именах переменных использовать массивы...
А между прочим, обращение к элементу массива в VB 6 как минимум в 1,5 раза дольше, чем к обычной переменной. К тому же массив займёт дополнительные 24 байта. А если обращение к переменной идёт в цикле, то задержка умножается на число повторов. Вообщем, должно быть понятно что для нескольких переменных надо использовать именно цифры, а не массив.
Но пишет и что надо избегать использования похожих символов: 1 и I, 1 и l, O и 0, S и 5, G и 6. С этим вот абсолютно согласен. Из них самые трудно различимые: l и 1, 0 и О. Так что врядли стоит l в качестве префикса использовать. Кстати, вместо неё, насколько замечал, больше всего n пишут и по-моему правильно делают.

Ответить

Номер ответа: 9
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #9
Добавлено: 19.06.10 21:58
Массивы используют там где надо использовать массивы) Типа, если нужно получить нормально распределенную случайную величину объемом 1000 штук, то явно нужен массив. Если же нужно хранить опции программы, то стоит использовать отдельные переменные названия которых хоть отдаленно напоминают о том, что собой представляет хранимая величина. Думаю всё так, а не иначе.

Ответить

Номер ответа: 10
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #10
Добавлено: 19.06.10 22:00
Не, ну если делать наоборот, то это однозначно будет доставлять, смекаешь? :)

Ответить

Номер ответа: 11
Автор ответа:
 Филюс



ICQ: 7116156 

Вопросов: 3
Ответов: 14
 Web-сайт: filyus.ru
 Профиль | | #11
Добавлено: 19.06.10 22:40
Мне будет доставлять когда в сообщениях VBDUNit станет чуть побольше смысла.

По делу предложений не будет? Какие сами префиксы используете?

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 19.06.10 22:53
иногда добавляю префиксы к контролам frm sld cmd, переменные как придется, но объявляю все обязательно
  1. Public FreeImageAvailable As Boolean 'true - доступна библиотека FreeImage
  2. Public newInternetStreamTags As Boolean 'Флаг об изменении тегов, выставляемый функцией MetaSync

Ответить

Номер ответа: 13
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #13 Добавлено: 20.06.10 00:07
  1.  
  2.         internal PointLatLng? m_crossMarkerPosition;
  3.         private Queue<RoutePair> m_routeQueue;
  4.         private RouteController m_routeController;



а я не парюсь с названиями переменных.. как есть так и пишу.. вот только с java привычка осталась - начало переменной всегда с маленькой буквы писать...

Ответить

Номер ответа: 14
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #14 Добавлено: 20.06.10 02:44
))) Вы бы видели как я обьявляю переменные;) У меня всё в кучу и буквенные обозначения и слова, притом русские слова пишу английскими буквами и очень редко смысл слова совпадает с тем, для чего нужна переменная.У меня в одной программе может быть , для примера:
  1.  
  2.         DateTime p1 = DateTime.Now;
  3.         Font f = new Font("Arial",15);
  4.         System.Drawing.Drawing2D.GraphicsPath Clock = new System.Drawing.Drawing2D.GraphicsPath();
  5.         int Param;
  6.         int Val;
  7.         int Back_Val = 0;
  8.         int val2;
  9.         int pol = 0;
  10.         public int Val1;
  11.         int Pan_Val;
  12.         int Mov_pan=0;
  13.         string[] s = new string[1];
  14.         string[] p = new string[1];
  15.         string[] names = new string[1];
  16.         int[] ind = new int[1];
  17.         System.Drawing.Icon Ico;
  18.         bool Del = false;
  19.         bool move = false;
  20.         bool Draw = false;
  21.         bool Sav = false;
  22.         bool AutoHide = false;
  23.         public bool Go_Hide = false;
  24.         int autoHide_Time = 0;
  25.         public int Val_Hide = 0;
  26.         Bitmap pic2;
  27.         Color Col;
  28.         System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
  29.         System.Drawing.Drawing2D.GraphicsPath[] path1 = new System.Drawing.Drawing2D.GraphicsPath[1];
  30.         Bitmap pic1;
  31.         bool Select_Elem = false;
  32.         bool Show_data = false;
  33.         byte style;
  34.         byte theme;
  35.         byte timer = 0;
  36.         int value_draw = 0;
  37.         bool Up = false;


Хотя часть из них и несёт какуюто информацию, но вот с остальными...

Ответить

Номер ответа: 15
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 20.06.10 04:20
DefLng etc это тяжкое наследие фортрана.
Венгерская нотация это говно.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам