GUI,无论是用WinForms还是XAML编写,似乎在我看到的项目之间具有最广泛的命名约定.对于一个TextBox人的名字的简单,我已经看到了各种命名约定:
TextBox tbName // Hungarian notation
TextBox txtName // Alternative Hungarian
TextBox NameTextBox // Not even camelCase
TextBox nameTextBox // Field after field with TextBox on the end
TextBox TextBoxName // Suggested in an answer...
TextBox textBoxName // Suggested in an answer...
TextBox uxName // Suggested in an answer...
TextBox name // Deceptive since you need name.Text to get the real value
TextBox textBox1 // Default name, as bad as you can get
Run Code Online (Sandbox Code Playgroud)
我通常会遵守所有.cs文件的StyleCop规则,并且看到其他人也这样做,但GUI往往会违反这些规则或变化很大.我没有看到任何专门引用GUI元素的Microsoft指南,而不仅仅是普通变量,甚至是在控制台应用程序之外应用的示例.
在GUI中命名元素的最佳实践是什么?
我查看了一些代码并发现惯例是将指针类型转换为
SomeStruct*
Run Code Online (Sandbox Code Playgroud)
成
typedef SomeStruct* pSomeStruct;
Run Code Online (Sandbox Code Playgroud)
这有什么好处吗?
由于C#是强类型的,我们真的需要为变量添加前缀吗?
例如
iUserAge
iCounter
strUsername
Run Code Online (Sandbox Code Playgroud)
我以前曾经用过前缀,但是前进我看不出任何好处.
是值得学习惯例还是可读性和可维护性的祸害?
毫无疑问,理解代码必须给成员变量一个前缀,这样才能很容易地将它们与"普通"变量区分开来.
但是你使用什么样的前缀?
我一直在研究我们使用m_作为前缀的项目,在我们仅使用下划线的其他项目上(我个人不喜欢,因为下划线只是不足以说明).
在另一个项目中,我们使用了一个长前缀形式,它也包含变量类型.mul_例如是u nsigned l ong 类型的m ember变量的前缀.
现在让我知道你使用什么样的前缀(请给出一个理由).
编辑:大多数人似乎没有成员变量的特殊前缀代码!这取决于语言吗?根据我的经验,C++代码倾向于使用下划线或m_作为成员变量的前缀.其他语言怎么样?
在PHP 5.3之前,我曾经将接口/抽象类命名为:
abstract class Framework_Package_Subpackage_Abstract {}
Framework/Package/Subpackage/Abstract.php
interface Framework_Package_Subpackage_Interface {}
Framework/Package/Subpackage/Interface.php
Run Code Online (Sandbox Code Playgroud)
现在使用PHP 5.3并使用命名空间我不能再使用我的约定了,因为interface它abstract是保留的关键字.
namespace Framework\Package\Subpackage;
abstract class Abstract {}
Framework/Package/Subpackage/Abstract.php
namespace Framework\Package\Subpackage;
interface Interface {}
Framework/Package/Subpackage/Interface.php
Run Code Online (Sandbox Code Playgroud)
那么,我应该如何命名我的类/接口呢?
这个问题是寻找匈牙利表示法的好例子,所以我们可以把这些集合汇集在一起.
编辑:我认为,匈牙利的类型是不是必要的,我希望更具体的例子,其中它增加了可读性和可维护性,像乔尔给出了他的文章(按我的答案).
我刚刚发现有人正在调用 - 从信号处理程序 - 一个绝对不是我编写的异步信号安全函数.
所以,现在我很好奇:如何避免这种情况再次发生?我希望能够轻松确定我的代码是否在信号处理程序上下文中运行(语言是C,但解决方案不适用于任何语言吗?):
int myfunc( void ) {
if( in_signal_handler_context() ) { return(-1) }
// rest of function goes here
return( 0 );
}
Run Code Online (Sandbox Code Playgroud)
这是在Linux下.希望这不是一个简单的答案,否则我会觉得自己像个白痴.
首先,我已经看过以下帖子以避免重复的问题.
/sf/ask/82930221/
为什么我不能使用"匈牙利表示法"?
是否真的有必要的前缀("匈牙利表示法")?
人们在现实世界中使用匈牙利命名约定吗?
现在,所有这些帖子都与C#,C++,Java - 强类型语言相关.
我确实理解在编译之前知道类型时不需要前缀.
不过,我的问题是:
考虑到在运行时之前无法看到对象的类型这一事实,是否值得在基于解释器的语言中使用前缀?
编辑:如果有人可以将此帖子作为社区维基,请执行.我对这篇文章的声誉(或负面声誉)几乎不感兴趣.
c# ×2
conventions ×2
c ×1
c++ ×1
coding-style ×1
dropdown ×1
handler ×1
interpreter ×1
ios ×1
linux ×1
matlab ×1
member ×1
namespaces ×1
naming ×1
objective-c ×1
php ×1
pointers ×1
prefix ×1
python ×1
signals ×1
swift ×1
typedef ×1
uitableview ×1
weak-typing ×1
winforms ×1