我在解决方案中定义所有NLog实例,如下所示:
private readonly static Logger logger = LogManager.GetCurrentClassLogger();
在所有NLog示例中,记录器字段是Camel: http://www.codeproject.com/Articles/10631/Introduction-to-NLog
但是,在Microsoft文档中,他们建议使用Pascal案例命名所有只读静态字段: https://msdn.microsoft.com/en-us/library/vstudio/ms229043%28v=vs.100%29.aspx
另外,StyleCop有一个具有相同Pascal约定的规则: http://www.stylecop.com/docs/SA1311.html
那么这个场景的最佳约定是什么?
答案 0 :(得分:0)
在我看来,命名约定总是有点模糊,微软似乎也没有遵循它们。
基于Resharper专用字段的命名约定(我相信基于StyleCop):
-private static readonly Type Name
-private readonly Type _name
我个人通常会使用Resharper提供的命名约定,因为它们似乎尽可能地遵循Microsoft的命名,并且它为整个代码库提供了一致性(如果您搞砸了,它会告诉您)。
答案 1 :(得分:0)
编辑:其他人已经注意到,编码标准有点像宗教。所以我在下面有我的个人偏好(基于我多年来的经验和研究)。
我个人喜欢将 private, static
设为小写并以下划线为前缀的支持字段,如下所示:
private static readonly Type log
private readonly Type _log
既然你提到了 StyleCop,如果你刚刚开始,我会坚持使用 StyleCop 的默认设置,看看你是否喜欢它。就个人而言,我在所有项目中都使用 .editorconfig,因此开发人员之间不会混淆。下面的配置用于设置上述建议(并禁用 StyleCop 规则)。
[*.{cs,vb}]
# camelCase and PascelCase
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
dotnet_naming_style.camel_case_style.capitalization = camel_case
# camelCase with _ prefix
dotnet_naming_style._camelCase.capitalization = camel_case
dotnet_naming_style._camelCase.required_prefix = _
# Private Static Fields is camelCase (e.g. log)
dotnet_naming_symbols.private_static_field_symbol.applicable_kinds = field
dotnet_naming_symbols.private_static_field_symbol.applicable_accessibilities = private
dotnet_naming_symbols.private_static_field_symbol.required_modifiers = static
dotnet_naming_rule.private_static_field_naming.symbols = private_static_field_symbol
dotnet_naming_rule.private_static_field_naming.style = camel_case_style
dotnet_naming_rule.private_static_field_naming.severity = suggestion
# SA1311: Static readonly fields should begin with upper-case letter
dotnet_diagnostic.SA1311.severity = none
# Private Fields is _camelCase (backing fields)
dotnet_naming_symbols.private_field_symbol.applicable_kinds = field
dotnet_naming_symbols.private_field_symbol.applicable_accessibilities = private
dotnet_naming_rule.private_field_naming.symbols = private_field_symbol
dotnet_naming_rule.private_field_naming.style = _camelCase
dotnet_naming_rule.private_field_naming.severity = suggestion
# SA1309: Field names should not begin with underscore
dotnet_diagnostic.SA1309.severity = none
P.S 我也更喜欢 log
名称而不是 logger
名称,后者是 log4net
的标准名称。使用较新的日志库,它已更改为 logger
。
我个人更喜欢阅读 log.Info(...)
,但我使用了带有方法 .LogInfo(...)
的日志库。在这种情况下,我使用 logger.LogInfo(...)
。我相信自 Microsoft.Extensions.Logging.Abstractions