标签: hungarian-notation

当前缀有效时,如何防止匈牙利表示法的StyleCop警告

我有以下代码:

var fxRate = new FxRate();
Run Code Online (Sandbox Code Playgroud)

这给了我以下StyleCop ReSharper警告:

变量名'fxRate'以类似匈牙利表示法的前缀开头.

我尝试将Settings.StyleCop文件复制到我的解决方案文件夹并为fx添加一个条目:

  <Analyzers>
    <Analyzer AnalyzerId="StyleCop.CSharp.NamingRules">
      <AnalyzerSettings>
        <CollectionProperty Name="Hungarian">
          ...
          <Value>fx</Value>
          ...
Run Code Online (Sandbox Code Playgroud)

我重新启动了VS,但我仍然得到同样的警告.我在VS2017中使用StyleCop ReSharper扩展.

如何确保"fx"是解决方案中的有效前缀(适用于所有团队成员)?

c# stylecop hungarian-notation visual-studio-2017 resharper-2018

11
推荐指数
1
解决办法
528
查看次数

以C开头的类名

MFC具有以C开头的所有类名.例如,CFile和CGdiObject.有没有人看过它在别处使用过?是否有Microsoft的官方命名约定指南推荐此样式?这个想法是源于MFC还是其他项目?

c++ mfc hungarian-notation visual-c++

10
推荐指数
7
解决办法
8556
查看次数

Python生成器函数名称 - 前缀有用吗?

大多数功能都很容易命名.通常,函数名称基于它的作用或它产生的结果类型.

但是,在生成器函数的情况下,结果可能是某种其他类型的可迭代结果.

def sometype( iterable ):
    for x in iterable:
        yield some_transformation( x )
Run Code Online (Sandbox Code Playgroud)

sometype名称会产生误导,因为该函数不会返回指定类型的对象.它真的是可迭代的sometype.

匈牙利表示法一样的名字iter_sometypegen_sometype感觉有点太多.但是,它似乎也澄清了该功能的意图.

更进一步,有一些更专业的案例,前缀可能会有所帮助.这些是典型的例子,其中一些可以在itertools中找到.但是,我们经常要编写一个版本,它具有一些算法复杂性,使其类似于itertools,但不是完美契合.

def reduce_sometype( iterable ):
    summary = sometype()
    for x in iterable:
         if some_rule(x): 
             yield summary
             summary= sometype()
         summary.update( x )

 def map_sometype( iterable ):
     for x in iterable:
         yield some_complex_mapping( x )

 def filter_sometype( iterable ):
     for x in iterable:
         if some_complex_rule(x):
              yield x
Run Code Online (Sandbox Code Playgroud)

请问iter_,map_, …

python functional-programming generator hungarian-notation

9
推荐指数
1
解决办法
1540
查看次数

如何修复StyleCop SA1305(匈牙利语)的违规行为

我的代码包含一个名为"m_d3dDevice"的变量.

StyleCop抱怨这个名字:

SA1305:变量名称'm_d3dDevice'以类似匈牙利表示法的前缀开头.删除前缀或将其添加到允许的前缀列表中.

(注意我手动禁用了SA1308("m_"),这是我愿意不服从的少数规则之一.)

我不能允许"d3d"作为匈牙利标签中的例外,因为它只允许1或2个字符前缀,并且允许"d3"没有帮助.我已经尝试了我能想到的所有内容,将"d3d"添加到我的CustomDictionary文件中(无论如何,文档暗示CustomDict不用于规则1305).

有什么建议使StyleCop允许这个吗?现在不需要F2我的变量是一件值得骄傲的事.

stylecop hungarian-notation

9
推荐指数
3
解决办法
1万
查看次数

WinAPI中的sz和pwsz前缀

我现在对WinAPI中用于CHAR字符串和WCHAR字符串的匈牙利表示法前缀感到困惑.当我们使用CHAR字符串时,通常使用这样的前缀:

CHAR szString[] = "Hello";
Run Code Online (Sandbox Code Playgroud)

我们有一个以零结尾的字符串szString所以一切都很好.但是当我们使用WCHAR字符串时,通常使用这样的前缀:

WCHAR pwszString[] = L"Hello";
Run Code Online (Sandbox Code Playgroud)

它代表指向零终止宽字符串的指针...但我们的类型看起来不像这样.指向零终止宽字符串的指针是WCHAR**或PWSTR*.我错了吗?为什么它是CHAR字符串和pwsz的sz而不是WCHAR字符串的wsz?

c++ winapi hungarian-notation wchar

9
推荐指数
1
解决办法
2926
查看次数

你是否遵循原始程序员的命名惯例?

如果您接管某人的项目进行简单更新,您是否遵循他们的命名惯例?我刚收到一个项目,以前的程序员到处都使用匈牙利表示法.我们的核心产品有一个命名标准,但我们已经有很多人多年来做自定义报告,并做任何他们想做的事情.

我没有时间更改代码中已有的所有变量名称.

为了继续他们的命名惯例,我倾向于可读性.

variables naming-conventions hungarian-notation

8
推荐指数
3
解决办法
982
查看次数

与匈牙利表示法相反?

大多数程序员都知道一种叫做"匈牙利表示法"的东西,每个变量都有一个很好的前缀来表示它的数据类型,即

bIsExciting = false;    // Boolean
strName = "Gonzo";      // String
iNumber = 10;           // Integer
Run Code Online (Sandbox Code Playgroud)

虽然这种符号形式已经失宠,但我看到(在工作中,互联网等)许多数据类型指标被添加为变量名称的" 后缀 ",即

NameStr = "Gonzo";        // String
NumberInt = 10;           // Integer
MyRideBike = new Bike();  // Bicycle
Run Code Online (Sandbox Code Playgroud)

当数据类型后缀为变量名时,是否有这个名称?

编辑:澄清......,这样的东西是否有一个独特的名称?如果没有,一些关于如何称呼它的简明想法肯定会受到赞赏.

language-agnostic naming-conventions hungarian-notation

8
推荐指数
2
解决办法
2103
查看次数

匈牙利人在VBA好吗?

我不在.Net中使用匈牙利语(str,int)前缀,但我仍然觉得它在VBA中很有用,在VBA中很难看到类型.

这不好吗?不必要?也许我错过了什么.

我真的很感激任何反馈.我一直在想.

谢谢大家.

vba hungarian-notation

6
推荐指数
3
解决办法
1738
查看次数

以自动方式摆脱C#代码中的匈牙利符号?

我有一个使用的系统匈牙利大多数变量名,这基本上意味着我有很多大的代码库 objQueue的,objCommon的,dtDataSet的等等.

有没有办法转换他们中的大多数?特别是,我想摆脱obj那些完全没有意义的烦人的,让变量名称看似相似,代码完全不可读.

一个类似的问题,但它询问是否值得做替换.
像"保持原样"这样的答案对我没有任何用处,因为我肯定我需要这样做.

代码库非常大,我不想逐个重命名变量.我也不想运行查找和替换,因为我会得到错误的命中并进一步搞乱代码.

是否有任何自动化工具可以在Visual Studio中进行此类替换?还有一些针对Resharper的插件,不管怎样?

resharper hungarian-notation code-cleanup visual-studio

6
推荐指数
1
解决办法
807
查看次数

VB.NET中的匈牙利符号?

我们的编程老师教我们使用匈牙利命名法(例如intMyInteger,strMyString,...),而编程.

但我听说某个地方实际上并没有在专业领域使用过.这是真的?

编辑:我刚发现这实际上是"Leszynski"

vb.net hungarian-notation

5
推荐指数
2
解决办法
3803
查看次数