>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 24337 个阅读者 刷新本主题
 * 贴子主题:  高级程序员,你需要养成这7个习惯 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2017-06-30 17:02:58     消息  查看  搜索  好友  邮件  复制  引用

初入编程时的我,作为新手,一直很迷茫,从未有方向。

  总觉得高级程序员,像天空中的星星高高在上。不知道自己通过怎样的姿势,才可以到达。

直到有一天我阅读了《程序员修炼之道:从小工到专家》,里边的这几条至今受用,以下是我的分享,供也在迷茫期的你参考。如果受用,请把他们记在心里,贴在桌子上。

  1.要有负责心

  在我们的每日工作中,有一半以上时间是在解决各种Bug。高级程序员在面对这些Bug时会从多个维度思考,Bug出现的时间、系统环境、硬件版本以及软件版本等等。接着修复问题,严格自测,上线后观察,一直会跟进到底,把影响降低到最小。

  他们会主动承担责任,为结果负责。面对各种问题时,不是第一时间为自己找借口,不是互相推脱,互相指责。而是,想尽一切办法解决问题,即使解决不了,也会给出最优选择。

  责任心在程序员的职业生涯中,具有最重要的指导意义,也是成为高级程序员必须具备的素质。

  2.掌握代码调试技巧

  众所周知,在移动互联网时代,基于市场和需求的变化,项目周期的变化也会很快。有时一个月的工作计划,会缩短到2个星期。面对巨大的项目压力,程序员的代码质量会有所下降。

  这时调试技巧就尤为重要。一行代码的输入输出要清楚,一个函数的输入输出要明确而具体。高级程序员会在函数的开始和结束输出Log,把所有的参数和返回值打印到日志系统,便于追踪。在解决问题的过程中,使用开发工具一行一行进行调试,实时观看参数的变化。

  高级程序员清楚的知道他写的每一行代码在项目中的作用和意义。

3.不要重复造“轮子”

  我们对代码的记忆最多只有2天,如果代码没有注释说明,也许第二天一早就会忘记它的具体意义。30天之前写的代码相信没几个人会记得。

  重复是怎样发生的呢?

  -1.程序员们没有意识到他们在重复。

  -2.程序员们偷懒,他们重复,因为那样似乎更容易。

  -3.同一个团队的几个人重复同样的信息。

  新需求持续进行迭代,需求的变化导致代码需要重新修改。这时的程序员也未必是当初那个程序员,导致隐藏的问题产生,产品到用户手上随时可能会爆发问题。

  高级程序员会尽力避免开发重复的代码,组装成公共组件库是最好的选择。

  4.尽量使你的程序解耦

  全球首位计算机博士David Wheeler曾经说过这样一句话,“计算机科学领域的任何问题都可以通过增加一个中间层来解决”。这句话诠释了解耦的重要性。网络七层协议的设计,软件开发的设计中,数据层、服务层和应用层,无不参考这位伟大计算机博士的思想。

  生活中随处可见这样的例子。共享单车的出现,就是对我们出行的解耦合。你要做的就是在你需要的时候去使用,不需要了解更多的细节,出现问题了也不需要你去维修,只管用就好。

  高级程序员开发的代码,既屏蔽细节,又提高了灵活性。

5.适当的进行重构

  重构是改善现有代码的设计。在给外部提供接口不变的前提下,随着时间的推移,在内部重写、重做和重新架构代码。

  什么时间做最好?做的太早,看不出有做的必要性。做的晚,耗费大量的时间周期,会影响当前的项目。

  初期的系统架构设计以简单、易用为主。在创业公司3、5个人一个小队,开始了一个项目。在人力资源匮乏的条件下,首要任务是先把系统搭建起来,短期实现基础版。后期随着需求的增加,系统变得庞大。早期的架构明显有些弊端,不能跟随项目进行发展。这时候重构就势在必行了。

  高级程序员清楚在什么时间点进行重构。在不影响外部系统的情况,重新开发,提供更稳定的服务。

  6.>积累自己的代码库

  如果你做了多年的软件开发,没有积累自己的代码库,没有做好笔记。面对新的项目,所有代码重写一遍。无疑了浪费了很多时间。网络上也可以下载到相关代码,但随手的一个小功能,如果在自己的代码仓库里积累好。也省去了搜索的时间。

  高级程序员会积累自己的代码仓库

  七.实践、实践、再实践

  有很多原则和道理我们听过无数遍,但是从来没有去实践。如果不经过几十万行代码的锤炼。很难达到一个高度。外部环境的支撑很重要。但是,如果没有这样的机遇,就需要我们创造条件去寻找。


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->面向对象开发方法概述之开发思想(上)
  JavaWeb开发-->JavaWeb应用入门(Ⅰ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->用Spring整合CXF发布Web服务
  精通Spring-->绑定CSS样式
  Vue3开发-->Vue指令
  Java虚拟机(JVM)参数配置说明
  面试官问:如何排除Java虚拟机的GC引起的CPU飙高?
  Eclipse和MyEclipse的区别
  好消息:孙卫琴老师等直播分享Java分布式架构专题
  HashMap中 get 和 put 操作的具体过程
  volatile 实现原理
  java.util.logging.Logger使用详解
  如何优雅地打印一个Java对象?
  Java读取大文件的高效率实现_java大文件
  java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍
  Java入门实用代码:获取远程文件大小
  通过Java读取Excel数据
  Java入门实用代码:删除一个文件目录
  java实现PPT转化为PDF
  类加载中的双亲委派模型
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。