http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7191|回复: 6

[C#基语法] [C#基语法]之C#注释-一个合格程序员应该做的事

[复制链接]
发表于 2018-11-26 16:47:34 | 显示全部楼层 |阅读模式
                                                [C#基语法]之C#注释
系列文章导航

  [C#基语法]苏飞传奇版   http://www.sufeinet.com/thread-3091-1-1.html


我对注释的理解

     我对注释的重视是从一开始学习语言就开始做的,没有注释的代码是我无论如何都无法接受的,没有注解的代码我只能说是一种不负责的做法

我们的代码想要通用,想要被更多的人优化熟悉并使用,通过注释了解是最方便最快速的方式

    做为一个程序员,无论如何都不应该不写注释
不光要写而且要写的突出重点,一看就明白。而不是长篇大论。
下面我给大家一说一下,我平时写代码的时候习惯用到的注释方式

类文件的注释

   类一般与一个文件对应,为了不破坏它的完整性,我通常是在最上方写注释,当然这是对于一个文件一个类的情况下的写法,看代码
[C#] 纯文本查看 复制代码
/// <summary>
/// 类说明:HttpHelper类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理
/// 重要提示:请不要自行修改本类,如果因为你自己修改后将无法升级到新版本。如果确实有什么问题请到官方网站提建议,
/// 我们一定会及时修改
/// 编码日期:2011-09-20
/// 编 码 人:苏飞
/// 联系方式:361983679  
/// 官方网址:[url=http://www.sufeinet.com/thread-3-1-1.html]http://www.sufeinet.com/thread-3-1-1.html[/url]
/// 修改日期:2018-11-06
/// 版 本 号:1.9.9
/// </summary>
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.IO.Compression;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.Linq;
using System.Net.Cache;

namespace SufeiUtil
{
    /// <summary>
    /// Http连接操作帮助类
    /// </summary>
    public class HttpHelper
    {

代码不全,主要看注释部分,我也就不贴完整的代码了

我一般会写以下几个要点
  • 类说明,简明的说明一下这个类的作用和方向
  • 重要提示,这里主要是写上这个类在使用过程中需要用户注意什么,也就是会影响实际输出,或者会对方法造成不良结果的地方,也可以说是Bug
  • 编码日期,也就是一个类的创建时间了。
  • 编码人,告诉用户 这类是自己写的
  • 联系方式,方便使用者与你取得联系,毕竟用到的人不一定都认识你
  • 更新地址,这个很重要,用别人的类大多是不想自己写,但随着时间的推移,总会有Bug或者不能满足的地方,这个时候用户可以根据这个地址找到最新的版本
  • 修改时间,写清最后一次更新的时间
  • 版本号,这个其实可有可无,如果一个产品的话这是必须的。


有了以上8点,基本上就可以满足一下类注释的基本需求了。

变量的注释

    这个就简单了,一个单行的注释就够了,当然有人可能会说一行要是写不完呢,那就写两行,但是最好一行写完,一个变量而已,说明用途就够了

[C#] 纯文本查看 复制代码
        //默认的编码
        private Encoding encoding = Encoding.Default;
        //Post数据编码
        private Encoding postencoding = Encoding.Default;
        //HttpWebRequest对象用来发起请求
        private HttpWebRequest request = null;
        //获取影响流的数据对象
        private HttpWebResponse response = null;
        //设置本地的出口ip和端口
        private IPEndPoint _IPEndPoint = null;


方法的注释

    这个先看个代码
[C#] 纯文本查看 复制代码
        /// <summary>
        /// 根据相传入的数据,得到相应页面数据
        /// </summary>
        /// <param name="item">参数类对象</param>
        public HttpResult GetHtml(HttpItem item)
        {

这里面有几点需要注意
1. 必须使用Xml格式的注释,如果我是一个团队管理者,我一定这样要求团队成员,不同意的就离职,不解释。
2. 必须对每一个参数进行说明

再来看下面这个
[C#] 纯文本查看 复制代码
   /// <summary>
        /// 获取数据的并解析的方法
        /// </summary>
        /// <param name="item"></param>
        /// <param name="result"></param>
        private void GetData(HttpItem item, HttpResult result)
        {

这是一个反面案例,这种做法是不允许的,这大部分是为了不让VS报警告的做法,正确的应该是对item,sesult参数进行说明。

大家有没有看出来上面两个例子都缺了一个方法另一个重核心的都
,????
当然,也必须是返回值
比如上面第一个方法应该是这样写
[C#] 纯文本查看 复制代码
    /// <summary>
        /// 根据相传入的数据,得到相应页面数据
        /// </summary>
        /// <param name="item">参数类对象</param>
        /// <returns>返回HttpResult类型</returns>
        public HttpResult GetHtml(HttpItem item)


有时候方法上需要写个例子,这个说实话我个人不太建议写,太新手,方法的引用基本没有人不会,除非是没学过语言,一个连方法都不会引用的人,你跟他说那么多也是对牛弹琴,当然这绝不是鄙视新手,而是大家要清楚你的类使用对象,面向的是那种类型的用户,如果你是老师,你不光要写,还是手把手的教,但显然我们都不是老师,那些应该是在学习就学会的东西
如果这个都要写的话,那不如把每一个字母的音标给加上得了
太基础的可以不写。
因为随时可以百度到。

实体类的注释

   
[C#] 纯文本查看 复制代码
    /// <summary>
    /// Cookie对象
    /// </summary>
    public class CookieItem
    {
        /// <summary>
        /// 键
        /// </summary>
        public string Key { get; set; }
        /// <summary>
        /// 值
        /// </summary>
        public string Value { get; set; }
    }

比如上面一个实体类的写法,个人感觉已经够了。
类内部的方法规划region用法

   这个分类的方法有很多,我一般是根据功能,或者模块来的。
看截图
QQ截图20181126162836.png
还有一种方法也是我所喜欢的
QQ截图20181126162940.png
这个就明确的告诉了你,里面都是干嘛的方法。
我们直接看一下第二个的代码如下
[C#] 纯文本查看 复制代码
        #region 使用 给定密钥字符串 加密/解密string
        /// <summary>
        /// 使用给定密钥字符串加密string
        /// </summary>
        /// <param name="original">原始文字</param>
        /// <param name="key">密钥</param>
        /// <param name="encoding">字符编码方案</param>
        /// <returns>密文</returns>
        public static string Encrypt(string original, string key)
        {
            byte[] buff = System.Text.Encoding.Default.GetBytes(original);
            byte[] kb = System.Text.Encoding.Default.GetBytes(key);
            return Convert.ToBase64String(Encrypt(buff, kb));
        }
        /// <summary>
        /// 使用给定密钥字符串解密string
        /// </summary>
        /// <param name="original">密文</param>
        /// <param name="key">密钥</param>
        /// <returns>明文</returns>
        public static string Decrypt(string original, string key)
        {
            return Decrypt(original, key, System.Text.Encoding.Default);
        }

        /// <summary>
        /// 使用给定密钥字符串解密string,返回指定编码方式明文
        /// </summary>
        /// <param name="encrypted">密文</param>
        /// <param name="key">密钥</param>
        /// <param name="encoding">字符编码方案</param>
        /// <returns>明文</returns>
        public static string Decrypt(string encrypted, string key, Encoding encoding)
        {
            byte[] buff = Convert.FromBase64String(encrypted);
            byte[] kb = System.Text.Encoding.Default.GetBytes(key);
            return encoding.GetString(Decrypt(buff, kb));
        }
        #endregion


总结

  我感觉应该是注意以下几点就行了
1. 能一句话说明白的不要写那么长
2. 能说明一下的不要偷懒
3.对于你的逻辑复杂的必须要加上注释
4.类,变量,常量,方法,属性,这些是必须要加的,没有理由。

不喜欢写注释的程序员不能算是一个合格的程序员。
也许 你会很成功,争很多钱,但绝对不是一个好程序员。

我想当一个好程序员,所以我一直在努力坚持写注释



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2018-11-26 16:50:57 | 显示全部楼层
大家有什么不同建议可以发出来交流一下。
发表于 2018-11-26 16:51:05 | 显示全部楼层
强烈支持楼主ing…… 收藏 学习
发表于 2018-11-26 16:51:56 | 显示全部楼层
强烈支持楼主ing……
发表于 2018-11-26 16:56:03 | 显示全部楼层
支持楼主,  代码的注释真的很重要, 尤其是在一个团队中, 代码注释处理好了, 其他人能很快的看懂并着手进行优化处理等
发表于 2018-11-26 16:56:54 | 显示全部楼层
不过还是建议添加上基本的引用, 免得在修改优化通用代码的时候, 直接修改了方法,结果其他引用的地方出了问题, 但是还没有测试到, 这就很尴尬了
 楼主| 发表于 2018-11-26 17:11:44 | 显示全部楼层
范范 发表于 2018-11-26 16:56
不过还是建议添加上基本的引用, 免得在修改优化通用代码的时候, 直接修改了方法,结果其他引用的地方出了 ...

这个其实是管理问题,你是要告诉我你们公司的管理有多混乱吗。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-26 08:26

© 2014-2021

快速回复 返回顶部 返回列表