Много статей не имеет срока устаревания. Есть смысл смотреть и 2011, и даже 2008 год. Политика сайта: написать статью, а потом обновлять ее много лет.
Открыта карта ВТБ для материальной поддержки сайта: 4893470220568296.

Рекламодателям! Перестаньте спамить мне на почту с предложениями о размещении рекламы на этом сайте. Я никогда спамером/рекламщиком не был и не буду!
" title="Написать письмо">Написать письмо

Статистика

Пользователи : 1
Статьи : 1238
Просмотры материалов : 4489199
 
Правильные префиксы для названий переменных (31.03.2014). Печать E-mail
2014 - Март
31.03.2014 20:55
Save & Share

Изучение книг по C++ позволило открыть интересный способ присваивания названия переменным и функциям, применяемом в любом языке.

Это определенный стиль написания, направленный на облегчение прочтения кода сторонним человеком. И ключевым моментом является именно префикс к переменной, а не ее основное название.

Если, к примеру, ранее я писал "int temp", то теперь всегда пишу "int iTemp". Разница в префиксе "i", указывающего на тип переменной, и заглавному названию переменной. Таким образом, из модифицированного названия сторонний программист увидит и ее назначение, и ее тип. Мало того, иногда это может приводить к исправлению скрытых ошибок, когда из-за обилия переменных человек может что-то не так перетипировать или что-то там округляется, например (префикс поможет увидеть логическую ошибку).

Итак, к корректному названию переменных добавляется префикс: int iTemp, String sTemp, float fTemp, double dTemp, AnsiString asTemp, unsigned int uiTemp, long int liTemp, ...

Данный способ может быть полезен и в названии функций: нагляднее читается sTemp = sFunc(char *cInput). Проблема здесь только в одном: если захочется указать для функции другой тип данных - придется переименовывать все ее вызовы. Но тут автоматическая замена поможет.

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

Оказывается, это называется "венгерская нотация", у которой есть и сторонники, и противники. Привожу описания переменных с Википедии (дай Ктулху здоровья этому ресурсу):

s

string

строка

sClientName

sz

zero-terminated string

строка, ограниченная нулевым символом

szClientName

n, i

int

целочисленная переменная

nSize, iSize

l

long

длинное целое

lAmount

b

boolean

булева переменная

bIsEmpty

a

array

массив

aDimensions

t, dt

time, datetime

время, дата и время

tDelivery, dtDelivery

p

pointer

указатель

pBox

lp

long pointer

двойной (дальний) указатель

lpBox

r

reference

ссылка

rBoxes

h

handle

дескриптор

hWindow

m_

member

переменная-член

m_sAddress

g_

global

глобальная переменная

g_nSpeed

C

class

класс

CString

T

type

тип

TObject

I

interface

интерфейс

IDispatch

v

void

отсутствие типа

vReserved

 

(добавлено 03.04.2017) Как же удобна эта нотация в среде QT, когда при начале набора переменных среда выдает их список: доступных в текущей функции.

Обновлено ( 03.04.2017 21:41 )
 
 

Последние новости


©2008-2019. All Rights Reserved. Разработчик - " title="Сергей Белов">Сергей Белов. Материалы сайта предоставляются по принципу "как есть". Автор не несет никакой ответственности и не гарантирует отсутствие неправильных сведений и ошибок. Вся ответственность за использование материалов лежит полностью на читателях. Размещение материалов данного сайта на иных сайтах запрещено без указания активной ссылки на данный сайт-первоисточник (ГК РФ: ст.1259 п.1 + ст.1274 п.1-3).