范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

如何写好java注释

  什么是java注释
  要回答这个问题,先提出一个说法:我们写的代码是给人看的,不是给机器看的.
  如果你不认可这个说法,下面关于代码注释的一些总结想必对你也没啥帮助.
  如果你认可这个说法, 那么下面的文章希望会给你一些帮助.
  回到本段的主题,什么是java注释呢?首先,注释是面向代码维护者的: 注释是对代码逻辑的一段说明, 方便后续的代码维护者能够快速地了解这段代码的含义,并依次为基础能够在现有代码的基础上做修改与维护.其次,注释是面向系统使用者的: 要知道类似于java,或者spring这样偏向于底层,框架类的代码.全世界有数以万计的使用者的,这些人没精力也没有必要在调用api的时候去了解这段代码的底层实现逻辑,所以这段代码的api说明文档就显得很重要了.而代码上的注释就是相关api文档的主要来源.通过javadoc命令,可以将注释抽离生成html文档,比如官方的java16API文档如何写好java注释
  想要写好代码的注释,我们要从注释的面向用户来考虑.不同的用户关注点还是有点差异的.面向代码维护者
  作为一名代码的维护者,当我们拿到一份没有任何注释的代码的时候,相信大家内心的感受是相同的.毕竟人类的悲欢并不相通, 除非看到没有注释的代码.
  如果有了解设计模式的朋友,相信一定听说过一个设计原则:开闭原则, 对扩展开发,对修改关闭. 那么大家有没有想过为啥会有这个原则呢?
  翻译一下: 修改现有的代码是有风险的,但是如果是扩展写新代码的话,作为开发者的你,是了解当前功能的前后背景的,而且你无论怎么写都不会对历史功能产生影响.所以对我们的代码设计能力提出来要求.
  再翻译一下: 原来的代码既然跑得好好的,为啥要修改它呢, 改出问题来算谁的?
  再翻译一下: 为啥我们不敢改以前的代码呢?谁知道当时为啥要写这段逻辑,谁知道这段逻辑有谁在用?改好了没有夸, 改崩了有锅背.
  这就是我们维护老代码的困境!
  作为一名程序员,我们要有一个概念,我们的代码是我们某个时刻的思维逻辑的固化.
  如果是一个比较简单的逻辑,注释可以简单写写.
  如果是一段比较复杂的逻辑,那么我们的注释要能够描述清楚我们当时的这段逻辑的背景(为什么要写这段逻辑), 意图(这段逻辑要实现什么效果), 用法(这段逻辑改如何使用,以及谁在用), 最好能有修改建议.
  在业界开源的代码里有很多比较好的例子,来个spring的:/**  * AOP Alliance MethodInterceptor for declarative transaction  * management using the common Spring transaction infrastructure  * ({@link org.springframework.transaction.PlatformTransactionManager}/  * {@link org.springframework.transaction.ReactiveTransactionManager}).  *  * 

Derives from the {@link TransactionAspectSupport} class which * contains the integration with Spring"s underlying transaction API. * TransactionInterceptor simply calls the relevant superclass methods * such as {@link #invokeWithinTransaction} in the correct order. * *

TransactionInterceptors are thread-safe. * * @author Rod Johnson * @author Juergen Hoeller * @see TransactionProxyFactoryBean * @see org.springframework.aop.framework.ProxyFactoryBean * @see org.springframework.aop.framework.ProxyFactory */ 面向api使用者   对于api的使用者,注释文档的要求相对简单些.   他们只关心这个方法的功能是什么, 以及入参有哪些,出参会有哪些, 会不会抛异常等, 会不会返回null等. 他们不关心这个方法的内部实现逻辑是啥, 比如一个排序方法, 使用者不关心这个方法内部使用冒泡排序,还是快排, 只要能完成诉求就行.   所以,面向api的使用者的注释,原则就是让他知道这个方法怎么使用就行了./** * Returns an Image object that can then be painted on the screen. * The url argument must specify an absolute {@link URL}. The name * argument is a specifier that is relative to the url argument. *

* This method always returns immediately, whether or not the * image exists. When this applet attempts to draw the image on * the screen, the data will be loaded. The graphics primitives * that draw the image will incrementally paint on the screen. * * @param url an absolute URL giving the base location of the image * @param name the location of the image, relative to the url argument * @return the image at the specified URL * @see Image */ public Image getImage(URL url, String name) { try { return getImage(new URL(url, name)); } catch (MalformedURLException e) { return null; } } 写好java注释常用的技巧常用的注释tag@param 方法参数@return 方法返回值@throws 方法抛出的异常, java1.2后添加@exception 同@throws@see 查看参考代码@author 标识作者@version 代码版本@since 从某个版本开始引入@serial( @serialField @serialData)@deprecated 废弃某个版本的代码常用的内联tag{@code} : 代码高亮,等同于 {@literal}{@literal} {@docRoot} : 标记文档的根路径,用来实现相对路径/** * See the Copyright. */ {@inheritDoc} : 继承某个文档,嵌套文档使用{@link url} : 在注释文本区域内, 内联一个链接Use the {@link #getComponentAt(int, int) getComponentAt} method. {@linkplain url label} 相对于{@link}, 支持自定义label文案来代指这段urlRefer to {@linkplain add() the overridden method}. 会显示为 Refer to "the overridden method". {@literal} 转义用, 方便显示一些特殊字符{@value} 常量时, 会直接显示标注代码的值注释语句中的小技巧@param @return @throws   一个正常方法必然会用到的注释tag,   @param 代表方法的入参,   @return 代表方法的返回值.   @throws 代表可能引发方法中断的异常. 等同与 @exception   这里需要特别说明一下, 有些人可能觉得只有那些受检异常(也就是必须在方法签名里声明的异常)才需要在注释里声明@throws. 其实不是的. 所有引发程序中断的异常, 包括运行时异常都可以在注释里说明, 也可以在方法签名里添加. 尤其是自定义的异常.   举个例子: /** * Return the underlying ThreadPoolExecutor for native access. * @return the underlying ThreadPoolExecutor (never {@code null}) * @throws IllegalStateException if the ThreadPoolTaskExecutor hasn"t been initialized yet */ public ThreadPoolExecutor getThreadPoolExecutor() throws IllegalStateException { Assert.state(this.threadPoolExecutor != null, "ThreadPoolTaskExecutor not initialized"); return this.threadPoolExecutor; }   这里的IllegalStateException 是一个RuntimeException异常, 我们在方法里可能抛出这个异常, 最好是在方法签名里声明一下, 然后在代码注释里说明一下.@see   当前代码可以参考的其他代码, 后面跟代码的全路径,可以是类,方法,属性等.具体参考如下:@see #field @see #Constructor(Type, Type...) @see #Constructor(Type id, Type id...) @see #method(Type, Type,...) @see #method(Type id, Type, id...) @see Class @see Class#field @see Class#Constructor(Type, Type...) @see Class#Constructor(Type id, Type id) @see Class#method(Type, Type,...) @see Class#method(Type id, Type id,...) @see package.Class @see package.Class#field @see package.Class#Constructor(Type, Type...) @see package.Class#Constructor(Type id, Type id) @see package.Class#method(Type, Type,...) @see package.Class#method(Type id, Type, id) @see package @author   标识当前代码的作者是谁, 可以一个,也可以有多个.@version @since   都是版本相关的tag   @version 标识当前版本好, 编译的时候会用到. 符合SCCS规范.   @since 标识这段代码的引入版本@serial @serialField @serialData   序列化相关的属性, 标识哪些字段可以序列化,哪些不行.@deprecated   废弃某段代码,表示不再维护,并在一段时间后会被删除. 标记后, 相关的引用位置会被标记为删除线.   个人认为这个tag还是很有用的:创建代码容易删除难, 这个tag能够很好的帮忙我们去下线不再维护的代码,减轻维护压力.(愿世界上屎山越来越少)方便我们代码升级. 如果我们要升级一段代码,先将老代码废弃,然后通过@see,引导用户使用新的方法./** * @deprecated As of JDK 1.1, replaced by * setBounds * @see #setBounds(int,int,int,int) */ html标签来排版

: 新起一段   : 换行 代码块样式   想在JAVA的注释中添加一段代码,并且可以优雅的编译出来还是挺麻烦的.下面提供一种方法 /** * 下面的代码注释可以按代码格式编译 *

      *     citys : [      *         beijing,      *         shanghai      *      ]      * 
* */ private List> citys; 参考   How to Write Doc Comments for the Javadoc ToolMenu   javadoc-The Java API Documentation Generator   How and When to Deprecate APIs

CCTV5直播!辽宁首钢三番战,杨鸣拒绝被双杀,刘雁宇付豪担大任悄然间,联赛第二十一轮比赛已经全部结束。在这轮比赛中,辽宁逆转击败吉林。战胜吉林的比赛,杨鸣指导继续缺阵。此前不敌首钢的比赛中,杨鸣指导因为不满裁判吹罚冲进场内,被联赛处于禁赛两场30!曼联赢麻了,解雇C罗后4连胜,逼近英超第3,滕哈格创造纪录北京时间1月4日凌晨,英超第19轮,曼联主场对阵伯恩茅斯。上半场卡塞米罗破门,下半场卢克肖和拉什福德建功,帮助曼联最终30拿下胜利,豪取英超4连胜,以及各项赛事6连胜,创造主帅滕哈好习惯成就好人生一个成功的人晓得如何培养好的习惯来代替坏的习惯,当好的习惯积累多了,自然就会有一个好的人生。伯德是NBA的一代传奇人物,是美国历史上最杰出的篮球明星之一,他的成功就得益于具有坚韧不过了腊八就是年,建议六道土豆美食别错过,补钾又补钙,年味十足大家好,这里是邱哥说美食,过了腊月初八之后,算是正式进入了过年时间,大街小巷已经开始在谈论过年要吃什么,买什么了。这个时候,我们也需要准备好自己的过年食谱,毕竟过年是一年之中最为重鱼胶新吃法嘟嘟鱼胶鸡煲,鱼胶搭配鸡肉会有意想不到美味哦大家好,我是鱼胶爱好者,鱼胶吃来吃去都是那些煮法,觉得没新意,想尝试一下新口味的,那么今天有福了,小编新发现鱼胶的一种新做法,不仅样子美观,味道更是一绝,想尝试新口味的小伙伴赶紧看朱八4次出手引援,3次满分1次不及格,封神签约助广东重回巅峰上赛季半决赛惨遭辽篮横扫,广东已经到了阵容需要大调整的一个阶段。休赛期球队送走了周鹏和威姆斯,选择放弃了最强的锋线配置,广东的超级五小打法,又将进行一次变革。休赛期,朱八从选秀大会蚝油生菜,切记不要直接焯水,多做这2步,颜色翠绿口感爽脆做蚝油生菜切记不要直接下锅焯水,那样做出来口感不够爽脆,颜色还发黑。今天给大家分享一下正确做法两毛钱一斤的长生菜,先去根,清洗生菜不要去冲洗,那样不能完全洗干净,先往水里面加一勺盐行善的最高境界是什么?您知道吗?一个行善的人,心底的月亮,已经超越了常人,升起在尘世寥廓的江天之上,它洞照的,是这个世界所有人的良心,以及心灵的纯净度。这样的大善,看起来,似乎只是对被救助者境遇的改变,实际上,它饱暖为啥思淫欲?相信每个人都有这样的感受,当一个人闲下来时,他就会发慌,不知道自己要干什么。你看小孩子如果吃饱后,他不会乖乖入睡,他要去玩,他需要找一些事做,不然他会闲得发慌。无聊是一个闲人最容易致溜走的青春之童年回忆石板路上踏过的青春,记得那些年参差不齐的石板路,清晰洪亮的吆喝声,肩并肩,背靠背的拥挤在人群中!记得那些年一个桃子一袋李子一个三毛钱的雪糕就足矣开心很久!记得那些年我们奔跑在大街小叶子的爱原创文美好时光SCS图片来自好友友嫩绿的叶子经历了春的荫动爱抚夏的炽热浓情秋的风霜考验叶子最终被枝丫抛弃了叶子不舍地飘悠在空中望着自己痴情依恋的枝丫顿感疑惑心想以前枝丫是多么的爱好
超超超润的巧克力海绵蛋糕,巨好吃这是一款超超超润的巧克力海绵蛋糕。松软,细腻,柔润,入口的感觉是如此的不一般。它不需要各种奶油和装饰的点缀,单纯的口感就能给你不一样的感觉。下午茶又有新选择了!超润巧克力海绵蛋糕配竞争激烈雷军终于松口,小米13手机256G直降400,价格低至3899最近数码界可以说是像过年一样热闹,前有红米K60大战一加ACE2,后有荣耀Magic5决斗华为P60,OPPO和真我也在参战队伍,这么强的竞争下小米的年度旗舰小米13终于迎来降价,爱在三月学雷锋我为春天添抹绿(通讯员周宣妤)春回大地,万物复苏,在这春意盎然的季节里,为了营造更加美好的环境,激发青少年对植物和生态环境的爱护和保护意识,同时增进亲子之间的互动和沟通,3月12日下午新河街道开中国足协,又有两人被查!据国家体育总局网站3月24日中午消息中国足协竞赛部部长黄松涉嫌严重违纪违法,目前正接受中央纪委国家监委驻国家体育总局纪检监察组和湖北省监委审查调查。中国足协纪律委员会主任王小平涉嫌第39届百合杯乒乓球联赛陕西开幕全国18个省214支队伍参赛第39届百合杯乒乓球联赛24日在陕西开幕。陕西省乒乓球羽毛球网球运动管理中心供图中新网西安3月24日电(记者张一辰)24日,一带一路陕西宝鸡百合杯乒乓球大奖赛暨第39届百合杯乒乓球纳格尔斯曼总赔偿或达3000万,而拜仁为其总花费高达7000万虎扑03月24日讯拜仁解雇纳格尔斯曼的总成本目前还没有具体出炉,但就目前的情况来看,可能总体的赔偿金额将高达3000万欧元。首先,由于纳格尔斯曼合同中具体的解约金要到下赛季才生效,快船正式官宣!最好结果出炉,伦纳德长舒一口气,就靠你和威少了要说这些年组成豪阵的球队中,路途走得最坎坷的球队,其实也就是快船了。我们可以看看19年夏天,同期组建豪阵的球队有篮网湖人快船。这三支球队中,如果说成就以及最成功的球队,自然就是湖人TA利物浦将瓦伦中场穆萨视作贝林厄姆备选要价4000万欧根据TheAthleticUK西班牙方面记者DermotCorrigan的报道,瓦伦西亚超新星,美国国脚尤努斯穆萨正处在一个十字路口。穆萨在2019年夏天转会到西班牙之前是阿森纳青欧预赛足球比分推荐白俄罗斯VS瑞士比赛时间20230326周日0100竞争分析白俄罗斯足球队是世界三流球队,目前在国际足联世界排名中以1221分排名第97位,略低于中国国足,处于欧洲中下游的低端。还有一个团队球队最中国游泳年轻教练抱团训练见成效当余依婷王浩宇费立纬各自登上全国春季游泳锦标赛不同项目的冠军领奖台时,指导他们的教练员也同台领奖。新生代飞鱼茁壮成长,新生代教练员也在共同进步。古人说三人行必有我师,这话说得太对了小体邀您免费上演泳池版水花消失术啦!优美的空中姿态超高的同步率上周日陈芋汐全红婵在全国跳水冠军赛中断层领先夺得女子双人10米跳台冠军网友惊呼再现水花消失术!跳水运动需要专业的技术和训练但是游泳可以全民同乐呀这次小体给