编码意识(一):在知道和真正理解并运用之间有一个过程

背景
  1. 从书上看见的,从讨论中获取的,从实践中体会的,从反思中感悟的编码意识。这些经验很好,可是真正能够运用起来却真的需要一个漫长的过程。
过程
  • 抽象与具体编码意识
  1. 销毁一个城市。销毁一个罗马城市。

    在具体的实现过程中,写一个销毁城市的方法,将城市名称作为参数传递。

  2. 更新一条数据。更新数据的状态为已完成。

    在具体的实现过程中,写一个更新数据的方法,把状态作为参数传递。

    结论:我的方法仅仅是“工具”,做一件事的中介,不应该和具体的业务逻辑耦合到一起

  • 修改代码的编码意识
  1. 不要去修改原来已有的且正确的业务逻辑过程,除非自己已经完全且深刻理解了整个流程。
  2. 如果有新的功能,应该去扩展的方式,也就是添加新的代码写。一般操作过程是:重构一下,然后在写。重构可以是简单的if else之类的。重构的目的:让代码结构更加简单,让新的代码不要修改原来的代码,而嵌入进去。
  3. 代码应该给修改的人一点提示,不能在程序里面加一些默认的特殊业务逻辑,比如:用 null 表示不可用,size 等于 0 表示黑名单,这就是一个雷,下一个修改者,包括自己,都不会记得有这样的约定。对于这个例子,一个原则就是永远不要区分 null 引用和 empty 值。
  • 每行代码的可靠性与不可靠性的编码意识
  1. 培养这样的一个意识,根据编码经验,理解哪些操作最大可能存在不可靠性。
  2. rpc调用可能存在调用失败情况。更新数据库数据存在程序失败情况。跟缓存层交互过程中也可能存在失败情况。
  3. 并发容器ConcurrentHashMap默认是线程安全的,这样可以理解为有可靠性的。
  4. 失败后应该怎么恢复,容错。编码应该提高清晰的切入点。
    结论:可靠与不可靠完全独立开。提供清晰的切入点。考虑到容错。恢复
  • 参数状态合理性的编码意识
  1. 应该尽早检验参数是否合理。一旦,不合理则立即抛出异常。异常不是错误,是当前的数据信息不满足业务需求,因此,应该大胆抛出异常即可。
  • 空指针编码意识
  1. 去数据库查询了一条数据,返回的null还是非null的size?这些都需要有潜意识理解。
  2. 从任何一个方法返回一个实体,都应该考虑到是否:null,甚至可以这样做,不用阅读原来的方法是返回怎样的实体。在调用方,如果要调用这个方法,则自己应该做到判断而不是依赖原来方法实现逻辑。因为原来的方法逻辑可能是会修改的。
  • List的size是否越界编码意识
  1. 拿到任何一个List应该考虑list是null吗?又抑或size是0呢?
  2. 或者size不是0呢?在根据size的大小写业务逻辑过程中,不应该依据具体的业务写方法,比如此业务逻辑告诉我,size的大小一定是3,就按照3写具体的业务逻辑过程。而应该反过来思考,我的方法仅仅是完成某件事的媒介,永远不要跟具体的业务逻辑过程耦合起来。
  • 不要吃掉异常的编码意识
  1. 异常不是错误。有了异常,能够处理就处理。不能处理则抛出即可。
  2. 在代码中,进行必要的数据信息检查,一旦,发现检查的数据不合理了,抛出异常即可。如果要捕获到异常,则捕获到了,一定要处理,不能吃掉了。否则,很难排查错误信息。
  • 横向编码操作细节编码意识
  1. 横向编码,是相对纵向编码而言。横向编码其实并不知道别人做了一件什么事,以及是怎样做的。
  2. 横向编码细节:入参一定要记录日志。这样可以准确定位问题。一来是知道是否调用了自己写的方法,二来是知道别人传递过来的参数是什么。
小结
  • 记录一些核心的非常重要的编码意识规范。如果能够做到,编写的代码就会很好,结构清晰,易懂,像散文诗。

  • 培养这样的一个个编码意识,编码的时候,多想一下,写着写着,这些意识就有了,就成了自己的,谁也拿不走。真的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目名称:Java中的简单游戏和应用程序 项目简介: 简单游戏和应用程序是一个Java项目。该项目包含23个不同的Java制作的应用程序和游戏。项目中还包括记事本、拼图等简单应用程序。这是一个单框架程序,你可以选择并运行你希望运行的程序。要运行此项目,你必须在系统上安装JDK路径。 项目简介: 这是一个简单的游戏和应用程序集合,由不同的Java应用程序组成,使该项目独特。你可以选择要运行的程序。如果你想运行记事本,只需在应用程序中点击选项。在记事本中,你可以轻松进行写作,可以处理任何你想要的文本样式。 此外,该项目还包括游戏和测验,例如井字棋和拼图游戏。项目中还提供了字数统计功能。你可以输入任意多的文本,之后可以统计段落中的字数。你还可以玩数独和太空侵略者游戏。不仅如此,你还可以在这个项目中运行不同的应用程序。 项目功能: 记事本:进行文本写作和格式处理。 拼图游戏:挑战你的智力。 井字棋:经典的两人游戏。 字数统计:统计输入文本的字数。 数独:经典的数字填空游戏。 太空侵略者:经典的射击游戏。 其他应用程序和游戏:总计23个不同的程序。 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值