你用过这种奇葩的C#注释吗
博客园一位微软MVP的文章
http://www.cnblogs.com/asxinyu/p/4383402.html#autoid-0-0-0
摘录:
我这里说的奇葩,并不是脱离三种方式,而是其注释的位置,但是在浏览一段开源的代码的时候,发现了这个注释,当时吃惊,然后是思考,先看看:

上面一段代码包括了前面提到的3种注释方式,红色框里面的就是我说的 奇葩注释,用的是 /* */块方式,写在数组定义的中间,毫无疑问,这肯定是可以运行的。只是以前没想到可以这样,可能局限于自己的思维方式。
根据我的理解,开发人员这样注释的目的,由于这段代码的变量包含的信息量很大,这样写更加直接明了。但是否多余,也可以直接在变量上面进行说明?
反过来想一想,在一些很复杂的问题中,变量的初始化可能非常复杂,这里的数组长度是2,如果是20,那怎么办?这样写优势就出来了,可以使得看代码的人,一目了然。
又在一个地方发现了一段类似注释的代码,是这样的:

3.对自己好用,那就用起来
刚开始有点接受不了,为了这个事情,我回忆了自己很多写过的代码,还特意翻了翻,最终我觉得以后在自己的代码中也可以逐步在合适的地方采用这种方式,一方面是由于以前没想到可以这样用,思维局限在哪里,习惯另起一行说明;另一方面的确是有很多代码需要这样明了的注释,可能自己的代码和架构能力不够,在很多地方耦合很严重,不得不通过很多的注释来表现自己的想法,而变量有特别多,像这种初始化的情况,的确是很很说明,看看我修改后的一段代码例子:
3.1 以前注释方式
以前的一段代码中,有一个固定的有限列表,是公司编号,但实际开发的时候,经常要知道对应的名称,当然数据库里面可以去查找,但代码里面直接看不到,所以我这样写的:
//权威公司编号名称(顺序):"澳门","金宝博","立博","威廉希尔","伟德","10BET","bet 365","SNAI"
static List<Int32> AuthCompanyIdList = new List<int>(){ 247, 250, 251, 252, 253, 1, 469, 179};
所以以前每次打开的时候,有错误或者手动排查一些信息,对着编号去注释找,虽然次数很少,但偶尔也要用到。所以看到上面的注释方式后,修改了一下。
3.2 现在的注释方式
修改后的代码是这样的,不是特意去改,是这样改之后,我自己也觉得好多了,看到这个代码就知道意思了。
internal static List<Int32> AuthCompanyIdList = new List<int>(){
247/*澳门*/, 250/*金宝博*/,
251/*立博*/, 252/*威廉希尔*/, 253/*伟德*/, 1/*10BET*/,
469/*bet 365*/, 179 /*SNAI*/
};
其实哪种都可以,重要的是你看得懂,方便看,所以如果你觉得有用,可以用上,觉得纯属无聊,那就跳过吐槽一下。
4.最后猜猜谁写的
敲代码应该是件轻松的事情,如果能把代码写得非常优雅,好懂,当然最好不过了。最后娱乐一下,猜猜这代码来自哪里?
A:某商业机器学习算法软件的.NET例子;
B:某国外开源机器学习算法的.NET实现博客例子;
C:微软研究人员机器学习算法实现的例子;
D:Python开源社区一个机器学习算法py实现的.NET版本;
如何看待和这种注释,各抒其见把。。。。也可能是我小题大作了把。。。了解,不断改进细节,不断进步把。。
下午揭晓答案。。。。
第一段代码来自微软剑桥研究院,是Infer.NET的一个Demo代码
第二段代码来自开源机器学习组件Accord.NET Framework的实例代码
你用过这种奇葩的C#注释吗的更多相关文章
- 你用过这种奇葩的C#注释吗?如何看待
本人虽然不是专业开发人员,也非专业出身,但一直使用C#堆码,解决自己日常的小问题.包括自己的研究,也是用C#来实现和测试.对C#是情有独钟.虽然C#的很多高级技术不会用,也不太懂,但总归是知道,耳闻目 ...
- .NET平台机器学习资源汇总,有你想要的么?
接触机器学习1年多了,由于只会用C#堆代码,所以只关注.NET平台的资源,一边积累,一边收集,一边学习,所以在本站第101篇博客到来之际,分享给大家.部分用过的 ,会有稍微详细点的说明,其他没用过的, ...
- .NET平台机器学习
.NET平台机器学习资源汇总,有你想要的么? 接触机器学习1年多了,由于只会用C#堆代码,所以只关注.NET平台的资源,一边积累,一边收集,一边学习,所以在本站第101篇博客到来之际,分享给大家.部分 ...
- .NET平台机器学习资源汇总,有你想要的么?(转)
出处:http://www.cnblogs.com/asxinyu/p/4422050.html 阅读目录 1.开源综合类 2.开源.NET平台非综合类 3.其他资源与技术博客 4.我的100篇博客之 ...
- java web开发中的奇葩事web.xml中context-param中的注释
同事提交了代码.结果除同事之外,其他人全部编译报错.报错说web.xml中配置的一个bean 没有定义.按照报错提示,各种找,无果. 由于代码全部都是提交到svn主干,之前也没有做过备份,只能一步一步 ...
- 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决
转载请声明出处(http://www.cnblogs.com/linguanh/) 目录 1,测试设备介绍 2,开源项目richeditor及CrossWalk的选择 3,遇到的bug及其解决方法 4 ...
- GPS围栏两个多边形相交问题的奇葩解法
前言 GPS测量仪测量的产地面积,然后提交到系统中,系统需要校验这块产地和其他产地是否有重叠,重叠超过10%就要提出警告这块产地已经被XXX登记入库了.GPS测量仪测量出来的数据是连续的经纬度坐标数据 ...
- jQ1.5源码注释以及解读RE
jQ作为javascript的库( ▼-▼ ), 尽善尽美, 代码优美, 值得学习. 这一周平常上班没啥事也看jQ1.5的代码, 今天周六差不多看完了(Sizzle部分还没看), 重新看了一下, ...
- mybatis generator 生成中文注释
mybatis generator默认生成 的注释太奇葩了,完全不能拿到生产去用,不过幸亏提供了接口可以自己扩展.长话短说,要生成如下的domain, package com.demo.domain; ...
随机推荐
- C语言写了一个socket client端,适合windows和linux,用GCC编译运行通过
////////////////////////////////////////////////////////////////////////////////* gcc -Wall -o c1 c1 ...
- git merge 的过程及冲突处理演示
master分支上有一个1.txt文件,进行修改后提交 $ cat 1.txt 1 11 12 $ echo 13 >> 1.txt $ git commit -a -m "mo ...
- 使用.NET Core与Google Optimization Tools实现员工排班计划Scheduling
上一篇说完<Google Optimization Tools介绍>,让大家初步了解了Google Optimization Tools是一款约束求解(CP)的高效套件.那么我们用.NET ...
- 什么情况下ArrayList增删 比LinkedList 更快
public static void main(String[] args){ final int MAX_VAL = 10000; List<Integer> linkedList = ...
- JAVA多态计算面积main函数调用方法
public static void main(String[] args) { Shape shape; Scanner input = new Scanner(System.in); System ...
- discuz 数据库文件密码修改
网站系统需要修改的位置有两处 Discuz 和 UC-center ①路径:/wwwroot/config/config_global.php 这个根据你网站安装的路径而定. 打开 config_gl ...
- Java判断一个时间是否在时间区间内
package com.liying.tiger.test; import java.text.ParseException; import java.text.SimpleDateFormat; i ...
- gitlab的md文件内使用锚点
markdown中使用锚点的格式: [要显示的内容](#锚点的链接) 如: [工具](#tool) 又因为再markdown中每一个标题都默认是锚点,所以事情就简单了 # test ## conten ...
- Entity Framework 6.x - Code First 默认创建数据库的位置
在集成DbContext的派生类中的构造函数里,如果没有指定配置文件中的数据库连接字符串的name,默认就是: Data Source=(localdb)\MSSQLLocalDB;Initial C ...
- 复刻smartbits的国产网络测试工具minismb-如何添加数据流
复刻smartbits的国产网络性能测试工具minismb,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此工具测试任何ip网络设备的端口吞吐率,带宽,并发连接数 ...