[FxCop.设计规则] 3. 避免定义空的接口

医学图像处理(一)使用U-Net进行MRI的肝脏分割 医学图像处理(一)使用U-Net进行MRI的肝脏分割数据集搜集训练集和测试集划分问题一: 测试集不包括GroundTruth问题二:T1和T2的数据能一起训练吗?问题三: T1的图像在文件夹中分成了InPhase和OutPhase,这个有什么区别?分离出肝脏将dicom文件转换为png格式数据增强U-net网络搭建自定义DatasetMain.py实验结果总结 图像分割小白一枚,之前接到一个MRI图像肝脏分割的任务。对于医学图像分割,第一想到的就是Unet. Unet在2015的MICCAI上首次提出,在医 阅读详情

 

版权声明:

 

本文由timewolf完成,首发于优快云,作者保留版权。
未经许可,不得使用于任何商业用途。
欢迎转载,但请保持文章及版权声明完整。
如需联络请发邮件:karla9(AT)eyou(dot)com

3.     避免定义空的接口

原文引用:

Avoid empty interfaces

TypeName:

AvoidEmptyInterfaces

CheckId:

CA1040

Category:

Microsoft.Design

Message Level:

Warning

Certainty:

90%

Breaking Change:

Breaking


Cause: The interface does not declare any members or implement other interfaces.

Rule Description

Interfaces define members that provide a behavior or usage contract. The functionality described by the interface can be adopted by any type, regardless of where the type appears in the inheritance hierarchy. A type implements an interface by providing implementations for the interface's members. An empty interface does not define any members, and as such, does not define a contract that can be implemented.

If your design includes empty interfaces that types are expected to implement, you are most likely using an interface as a marker, or a way of identifying a group of types. If this identification will occur at runtime, the correct way to accomplish this is to use a custom attribute. Use the presence or absence of the attribute, or the attribute's properties, to identify the target types. If the identification must occur at compile time, then using an empty interface is acceptable.

How to Fix Violations

Remove the interface or add members to it. If the empty interface is being used to label a set of types, replace the interface with a custom attribute.

When to Exclude Messages

It is safe to exclude a message from this rule if the interface is used to identify a set of types at compile-time.

Example Code

The following example shows an empty interface.

[C#]

using System;

namespace DesignLibrary
{
   
public interface BadInterface
   
{
      
// Violates rule: AvoidEmptyInterfaces.
   }

}

 

引发原因:

一个接口没有任何成员,且没有继承其他接口。

规则描述:

接口定义了一组成员,用以描述接口拥有的行为或契约(usage contract),任何类型都可以实现该接口, 无需考虑该类的继承层次。一个类通过实现接口的成员从而实现接口。一个空的接口没有定义任何成员,因此,也就没有任何契约能够被实现。

如果你的设计包含空的接口,并希望它被某些类实现,你很可能是将该接口作为一个标记,用以标示一组类型。如果只需在运行时区分这些类型,你可以使用自定义特性(attribute)。通过检查某个类是否包含该特性,以及特性所包含的属性(property),来达到识别某个类的目的;当然,如果你希望在编译期就执行此种检查,就只好使用空接口了。

修复:

删除该接口,或添加必要的成员到该接口。

如果该接口被用于运行时的类型识别,将接口替换为自定义特性。

译注:

自定义特性是.NET新引入的一种开发元素,通过将自定义特性和应用程序元数据保存在一起,开发人员可以获得类似自定义关键字的能力。以下是MSDN中对于特性的描述:

如果您使用过 C++,您或许对包含关键字(如 public 和 private)的声明比较熟悉。这些关键字提供有关类成员的附加信息,还通过描述类成员对其他类的可访问性来进一步定义类成员的行为。由于编译器被显式设计为识别预定义关键字,因此传统上您没有机会创建自己的关键字。但是,公共语言运行库允许您添加类似关键字的描述性声明(称为特性)来批注编程元素,如类型、字段、方法和属性。

为运行库编译代码时,该代码被转换为 Microsoft 中间语言 (MSIL),并同编译器生成的元数据一起被放到可移植可执行 (PE) 文件的内部。特性使您得以向元数据中放置额外的描述性信息,并可使用运行库反射服务提取该信息。当您声明从 System.Attribute 派生的特殊类的实例时,编译器创建特性。

.NET Framework 出于多种原因使用特性并通过它们解决若干问题。特性可以描述如何序列化数据,指定用于强制安全性的特性,以及限制实时 (JIT) 编译器的优化以使代码易于调试。特性还可以记录文件名或代码作者,或在窗体开发阶段控制控件和成员的可见性。

可使用特性以几乎所有可能的方式描述代码,并以富有创造性的新方式影响运行库行为。特性允许您向 C#、C++ 托管扩展、Microsoft Visual Basic .NET 或其他任何以运行库为目标的语言添加自己的描述性元素,而不必重新编写编译器。

使用特性可以获得很大的开发灵活性,并且可以提供很多非常清晰易读的代码,笔者看到的在NUnit中的一段代码可以作为使用特性的很好例子:
上面的例子中,基类里通过自定义特性分析命令行参数,并将他们分别填充到字段中。例如用户输入下面的命令行参数:

namespace NUnit.Util
{
     
using System;
     
using Codeblast;

     
public class ConsoleOptions : CommandLineOptions
     
{
         [Option(Description 
= "Fixture to test")]
         
public string fixture;

         [Option(Description 
= "Project configuration to load")]
         
public string config;
 
         [Option(Description 
= "Name of XML output file")]
         
public string xml;
 
         [Option(Description 
= "Name of transform file")]
         
public string transform;
 
         [Option(Description 
= "Display XML to the console")]
         
public bool xmlConsole;
     }

}


NUnit-Console.exe /config:a.cfg

基类就会将“a.cfg”填充到config变量中。

相关的代码可以参考NUnit/nunit.util.dll/CommandLineOption.cs 和 NUnit/nunit.util.dll/ConsoleOption.cs。

Android oom_adj 更新原理(一) 通过之前的两篇博文《lmkd 机制详解》和《lmkd中adj score的算法剖析》中,根据计算出来的 min_score_adj 选择大于该值的 oom_adj 的进程进行 kill 处理。oom_adj 随着应用状态的不同其值也是伴随着变化的。本文将通过源码剖析 oom_adj 更新的原理。 阅读详情

相关推荐

销售预测的方法与模型(三)丨安全库存与再订货(补货)

较高的 Z 值对应较高的服务水平(例如,服务水平 99% 对应 Z 值 2.33),意味着企业希望更低的缺货风险,因此需要更高的安全库存。在再订货点的管理中,考虑到供应商交货的不确定性,通常需要结合安全库存,以防止在交货期间库存用尽。要对L开根号,根号L表示交货周期越长,企业需要的安全库存越多,因为在较长的供应期内,需求波动的累积效应更明显。举例:供应商的交期服从标准差为2件/天的正态分布,顾客需求为50件/天的正态分布,若要客户服务水平达到 90%,安全库存量应该是多少?下面介绍几种核心的模型与公式。

weixin_45675709的博客 1534

[FxCop.设计规则]3. 避免定义空的接口

3.     避免定义空的接口原文引用:Avoid empty interfacesTypeName:AvoidEmptyInterfacesCheckId:CA1040Category:Microsoft.DesignMessage Level:WarningCertainty:90% Breaking Change:BreakingCause: The interface does not d

cajon的专栏 1551

U盘安装单系统ubuntu10.04之全过程&拔掉U盘后系统无法启动

借助U盘把电脑装成ubuntu单系统之过程记录,以及遇到拔掉U盘后系统无法启动问题,电脑就显示: Non-System disk or disk error, replace and strike any key when ready

CXHPLY的专栏 8680

Microsoft FxCop 的设计规则 .

一、Design Rules(设计规约) 1、AbstractTypesShouldNotHaveConstructors    CA1012 不言而喻,抽象类型里即使编写了构造函数也不能直接的调用到。 4、AvoidExcessiveParametersOnGenericTypes    CA1005 避免泛型类型的参数过多,两个是一个分界线,最好不要超过两个。 7、Collectio

胡杨 3030

K型热电偶负电压采集难题?3种运放电路设计方案对比(含Multisim仿真)

本文针对K型热电偶在低温测量中产生的负电压采集难题,详细对比了三种运放电路设计方案,包括双电源运放反相放大、单电源仪表放大器和差分放大电路,并结合Multisim仿真数据分析了各方案的性能差异。文章还提供了PCB布局和抗干扰设计的实战技巧,帮助工程师解决热电偶信号采集中的核心挑战。

postgres8guard的博客 1018

告别手动复制粘贴!用Python脚本+pywinauto实现PC微信消息自动发送(附完整源码)

本文详细介绍了如何利用Python和pywinauto实现PC微信消息的自动化发送,告别繁琐的手动操作。从环境搭建、UI控件定位到构建健壮的发送流程,再到高级功能扩展和项目打包部署,全面解析了自动化办公的实现方案,显著提升工作效率。

weixin_30315723的博客 584

FxCop 设计规则

FxCop 设计规则 Posted on 2005-09-07 16:40 冰戈 阅读(193) 评论(0)  编辑 收藏 收藏至365Key 所属分类: .NET资料 <!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/

deadshot123的专栏 2055

手把手教你编写I2C读写EEPROM代码(驱动层实现)

从底层寄存器配置到时序控制,详解如何编写可移植的I2C读写EEPROM代码,覆盖起始信号、地址帧、数据收发及ACK应答等关键环节,确保在STM32、ESP32等主流平台稳定运行,真正落地i2c读写eeprom代码需求。

weixin_35756130的博客 506

Microsoft FxCop 的设计规则

近日在尝试利用Microsoft FxCop进行一些.Net项目进行检测和优化,这里转贴一下FxCop 的设计规则:一、 Design(设计)1. Abstract types should not have constructors 抽象类不应该声明构造方法2. Assemblies should have valid strong names 程序集应该具有强名称3. Avoid em

Anders's Blog 1767

《QT+PCL》点云的点选与框选

【代码】《QT+PCL》点云的点选与框选。

阁楼 3602

AutosarMCAL开发——基于EB CRC驱动

本文为博主个人理解总结记录,如有不正,欢迎指正。

qq_45583706的博客 1389

代码审查工具FxCop建议采用的规则总结

续接:    代码走查工具篇FxCop的规则总结与翻译_Part1  代码走查工具篇FxCop的规则总结与翻译_Part2 代码走查工具篇FxCop的规则总结与翻译_Part3    本篇结合我的实际工作需要,总结了一份在实际工作中采纳的规则项目,总结不妥之处,还请多海涵。 一、Design Rules(设计规约) 1、AbstractTypesShou

anders lu 的专栏 4426

Python爬虫技术:使用Playwright和Twitter API v2高效获取Twitter/X数据完全教程

遵守规则:始终遵循Twitter的使用条款和速率限制错误处理:实现完善的错误处理和重试机制数据质量:进行数据清洗和验证性能优化:使用异步处理和合理的延迟设置可维护性:模块化代码,便于维护和扩展。

2201_76125261的博客 671

代码走查工具篇FxCop的规则总结与翻译_Part1

FxCop介绍 摘抄自百度知道,如下:     FxCop是一个代码分析工具,它依照微软.NET框架的设计规范对托管代码assembly(可称为程序集,assembly实际上指的就是.net中的.exe或者.dll文件(不包括netmodule文件),这种文件中包含四种信息:assembly的清单(包括引用外部的assembly、netmodule与资源文件及包含在同一文件中的assembly

anders lu 的专栏 3565

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[置顶] 代码审查工具FxCop建议采用的规则总结

续接: 代码走查工具篇FxCop的规则总结与翻译_Part1 代码走查工具篇FxCop的规则总结与翻译_Part2 代码走查工具篇FxCop的规则总结与翻译_Part3 本篇结合我的实际工作需要,总结了一份在实际工作中采纳的规则项目,总结不妥之处,还请多海涵。 一、DesignRules(设计规约) 1、AbstractTypesShouldNo...

weixin_30483495的博客 598

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

从FxCop归纳出来的一些规范建议

从FxCop归纳出来的一些规范建议 下面是根据FxCop整理的.NET代码编写规范,仅供参考。一、 Design(设计)1. Abstract types should not have constructors 抽象类不应该声明构造方法2. Assemblies should have valid strong names 程序集应该具有强名称3. Avoid empty inte...

291

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

从FxCop归纳出来的一些规范建议 (转)

下面是根据FxCop整理的.NET代码编写规范,仅供参考。 一、 Design(设计) 1. Abstract types should not have constructors 抽象类不应该声明构造方法 2. Assemblies should have valid strong names 程序集应该具有强名称 3. Avoid empty interfaces ...

dengnian8283的博客 151

fxcop study

FxCop 设计规则 Posted on 2005-09-07 16:40 冰戈 阅读(193) 评论(0)  编辑 收藏 收藏至365Key 所属分类: .NET资料   一、 Design(设计)1. Abstract types should not have constructors 抽象类不应该声明构造方法2. Assemblies should have valid strong

chenyistrength的专栏 535

[置顶] 代码走查工具篇FxCop的规则总结与翻译_Part1

FxCop介绍 摘抄自百度知道,如下: FxCop是一个代码分析工具,它依照微软.NET框架的设计规范对托管代码assembly(可称为程序集,assembly实际上指的就是.net中的.exe或者.dll文件(不包括netmodule文件),这种文件中包含四种信息:assembly的清单(包括引用外部的assembly、netmodule与资源文件及包含在同一文件中的a...

weixin_30244889的博客 120

转:根据FxCop整理的.NET代码编写规范,仅供参考

下面是根据FxCop整理的.NET代码编写规范,仅供参考。一、 Design(设计) 1. Abstract types should not have constructors 抽象类不应该声明构造方法 2. Assemblies should have valid strong names 程序集应该具有强名称 3. Avoid empty ...

282
上一篇: [FxCop.设计规则]2. 程序集应该拥有有效的强命名
下一篇: [FxCop.设计规则]4. 避免太多的范型参数
timewolf
博客等级 码龄23年 12粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值