不经意之间已经接触代码一年多了,回头看向大一那时候的自己,什么都不懂,但也能过得很开心。今天就写点东西,给未来的自己一个回忆。


编程伊始

大一下开始接触Java,到现在整整一年了。中间虽然不是一直在学Java,但是还是很亲切。那个时候真的是无头苍蝇一样,没有方向,没有好的学习方法,到处碰壁。

泡在图书馆,照着书上的例子一个一个的敲,到各种视频网站上看人家的编程经典视频。时间总是那么的短,每天都不够用似得。然而收获却总达不到自己的预期。付出与收获并没有成正比,看看那个时候的自己,真的是傻傻的坚持着。

然而现在想想,仿佛答案并不是很复杂。从一开始,“路”就错了。在一条错误的路上越努力,离成功就有可能越远。不顾一切的努力没有错,但是前提是适合自己,在思考中努力。

我的反思就是,“在思考中编程,而不是埋头苦干”。书本,教学视频,无非是一些辅助。根本不是真正的重点。而且,在初期看些视频啊,书本什么的确实很有成效。按照别人的方法,一点点的“临摹”,确实,当时的代码确实是运行成功了,得到了想要的结果。然后就以为自己可以了。然而,却忘记了最重要的原则,脱离了外界,我能独立的完成吗?别人实现的思路真的弄明白了吗?我想,当时的我压根没有思考过这个问题吧。不然也不可能荒废了那么宝贵的时间。

但是,过去了,就真的是过去了。是更改不了的事实,唯一能做的就是尽量的去弥补。

编程之道

这里是说给自己的一番话,如果你恰巧看到了这些,而且也比较的适合你,那么我很荣幸!

“需求”分析

这里用了“需求”这个词语,属于断章取义。然而意思没有变,在我们编程之前,不知道有多少人真正的思考过,我们正面临着什么样的问题。真的分析的透彻了吗?

我见过很多人,包括我自己。拿到一个问题,立马就着手coding了。但是做着做着就迷茫了。或者返工,更有甚者,就那么放弃了。那么我们今天不妨想一想,

  • 我们真的弄明白问题了吗?

  • 我们要完成一个怎样的功能?

  • 我们要以怎样的方式来解决这个问题?

  • 我们的这个方式的可行性有多大?
    ·
    ·
    ·

    真正的弄清楚问题,不是我们认为的那么简单。

注释的艺术

注释,有多少人真正会注释?就连我自己,我都汗颜,因为我不怎么会注释。而且我也相信,大多数人和我一样,并不会注释!作“注释”可以算得上一个非技术性,非智力性的活动。

我们不妨先自己反思一下,注释是干什么的?

难道仅仅是为了让别人看到这个注释完成的功能吗?

我想说的是,是的。注释很大的一方面就是为了让别人了解代码的功能,这也是注释存在的根本的意义!然而我们很多人没有想到的是,注释不仅仅是这样的。

注释的原则:代码逻辑是怎样展开的,而不简单是代码做了什么

我想我们大部分人,都是停留在后者吧。是时候反思一下了。

注释的规范:这一点我不敢说多咯,因为规范这种东西,真的说不好。我一直认为,根本没有什么万能的规范,适合的才是最好的。对于团队而言,亦是如此!

空格的魅力

空格键,键盘上面积最大的一个键位。我们也许都会认为,它无关紧要,很平凡,很普通! 但是我想说的是,它很伟大。我们大部分人都没有认识到,空格给我们带来的美感。

可能,在一个平台上,这一点体现的并不是很明显。比如我用的是Windows,你用的也是Windows,所以你拷贝完我的代码,在你那显示的依旧很完美。很正常。但是加入你的是Linux,我的是Windows,别人的是Unix呢?代码还会显示的很一致吗?

答案并不是。这一切的一切都是因为一个tab键,这个让人又爱又恨的键位。不通过平台的tab键处理方案的不一致性导致了这一问题的出现,较好的解决方法就是放弃使用tab键,而是改用空格键。

相信,如果你遇到过跨平台文件编辑时让人痛苦的排版问题。特别当你是一个喜欢用tab键的Python程序员的时候,痛苦会加倍上升吧。

起名字的艺术

你也许听到别人说过,关于coding的时候命名的规范。然而每次当你需要命名一些变量,方法(函数)的时候,却又总是忘记来应用。

还记得大一的时候学习C语言,看到一串串的i,j,k,p,o,m,n···光是想想,就让人心烦,这些变量的取名是没问题,但是这一大串的无意义的名字,唯一带给我们的就是繁重的记忆负担。削弱了我们对代码逻辑的理解能力。

我的建议:不管是对变量,方法,函数,类···,命名的时候先思考一下,斟酌之后再敲下你的命名。这对代码维护会很有帮助的。

早前,看过一段话,大致如下:

设想一下,当你走过你的代码的被照亮的森林时,你在身后留下了面包屑。相信我,当你需要找到回去的路时,森林将充满可黑暗,朦胧和不详的预感。

其意蕴,自己体会一下吧。相信有过经历的人,会刻骨铭心吧。

重构之道

重构Refactor.一个看似晦涩难懂的词语,但是其作用却是何等的巨大。

重构的目标就是消除重复代码,降低耦合,便于维护。

但是你会重构吗?重构不是简单的把一段段的代码块揉到一个方法里面,有些时候。看似重复的代码也是不能整合成一个的。说起来很苍白,但是真的是很有韵味。

下次,编码的时候,尽量把你的代码做的规范一下,该删的删,该合并的合并,尽量以一种匠心来编写你的代码。当然了,这种能力不是说说就会有的,关键在于锻炼。

测试之路

我自己的专业就是软件开发与测试,貌似矛盾的二义性的专业。做程序员的都明白,开发部和测试部基本上属于仇敌类型的两个部门。仔细的想一想,关键就在于代码的测试上。

一段健壮的代码,经得起千锤百炼;对于目前的我们,完成一个小功能(方法,函数)的时候立刻,现在,马上做测试。而不要拖延,否则虐心的只能是自己。

调试的艺术

说起调试,我就得批评一下我自己了。因为懒,所以懒得打断点,懒得查堆栈。总是使用:

  • System.out.println()
  • Log.i()
  • print
  • printf
  • console.log()
    ·
    ·
    ·
    其实这种方式并没有我们想象的那么好,尤其是代码量特别巨大的时候。调试只能让我们心焦气燥。我们要学会使用Debug,这将是我今后努力的方向!

学好Debug,遇到再多Bug也不怕。

写在最后

作为一个尚未入职的学生,写下这段苍白的语段,留念而已。希望将来的我,回过头来在看到这篇文章的时候,能感到一丝丝的欣慰。

青春嘛,留下点回忆,总归是好的。

愿经年之后,此心依旧!

                                ---- 致 未来的自己。

编程之禅 -- 写给自己的话相关推荐

  1. 《编程之禅》Geoffrey James

    前言                 <编程之道>的出版在程序设计业内得到了普遍的接受,出版社邀请我翻译一些与之相关的文章,以作为那部著名的经典之作的补充.虽然,我申明我的能力难以胜任,但 ...

  2. 《编程之禅》 转自BlackEagle_的专栏

    前言    <编程之道>的出版在程序设计业内得到了普遍的接受,出版社邀请我翻译一些与之相关的文章,以作为那部著名的经典之作的补充.虽然,我申明我的能力难以胜任,但我最终还是被说服试一试.  ...

  3. 《编程之禅》序(转载)

    <编程之禅>(转载) 序 蓝森林http://www.lslnet.com/ 01-06-28 11:25 4316p Geoffrey James ------------------- ...

  4. 《编程之道》第二册:《编程之禅》

    前言    <编程之道>的出版在程序设计业内得到了普遍的接受,出版社邀请我翻译一些与之相关的文章,以作为那部著名的经典之作的补充.虽然,我申明我的能力难以胜任,但我最终还是被说服试一试.  ...

  5. 操作系统之多线程编程—读者优先/写者优先详解

    操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...

  6. 禾川触摸屏编程软件_汇川PLC编程PLC代写程序

    汇川PLC编程-PLC代写程序 硬件设计 在硬件方面,Pro-face的要求不高,需要一个24V/2A的直流电源和触摸屏本身.另外,为了与PLC通讯,我们根据需要选择了MPI接口的RS232C串行连接 ...

  7. 编程不仅是写代码!?

    作者 | keypressingmonkey 译者 | 孙薇,责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 1. 非天才生存指南 承认这一点很难,我的正式简历上也不会有:我是一名普通的 ...

  8. 代写python作业费用标准_代做159.272作业、代写Programming Paradigms作业、代做Python实验作业、代写Java/c++编程作业代写Database|代做R...

    代做159.272作业.代写Programming Paradigms作业.代做Python实验作业.代写Java/c++编程作业代写Database|代做RComputational Thinkin ...

  9. python开发cs程序_CSE209代做、代写Computer Graphics、代做CS/python编程设计代写Python程序|代做Processing...

    CSE209代做.代写Computer Graphics.代做CS/python编程设计代写Python程序|代做ProcessingCSE209 Computer Graphics~1~CSE209 ...

最新文章

  1. Ant Design Pro 跳转路由 传参数,接收参数
  2. 首发 | 旷视14篇CVPR 2019论文,都有哪些亮点?
  3. 第k大的数python代码_【Python】【输出前m大的数】
  4. 排序算法(插入、快速、归并)java实现
  5. 《漫画算法2》源码整理-8 链表中倒数第K个节点元素
  6. oracle 根据值不同具有不同的搜索条件_在Navicat Premium中执行数据库范围内的搜索...
  7. java response.write_@ResponseBody与response.getWriter .write()区别
  8. jquery如何获取第一个或最后一个子元素?
  9. 深度学习笔记(37) 交并比
  10. 映射内网ftp服务器到公网报错问题解决
  11. TypeError: unhashable type: 'list'
  12. 打开计算机打不开运行错误怎么办,注册表打不开,电脑出错注册表编辑器打不开怎么办?...
  13. 【收藏】夜光遥感数据下载网址及方式
  14. 用iPhone打造个人的GTD(Get Things Done)实践
  15. 杰奇win系统装Linux,杰奇小说liunx+win下关关完美运行采集方案
  16. 孙玄:人工智能时代,你需要掌握的经典大规模文本相似识别架构和算法
  17. opencv 图像阈值 二值化处理
  18. CSS文字加粗,字体,颜色渐变,消失总结
  19. JavaScript获取汉字的区位码
  20. MapReduce: Simplified Data Processing on Large Clusters 翻译加理解

热门文章

  1. python MRO()
  2. redis Cluster集群介绍
  3. 梅赛德斯-奔驰在上海车展发布EQG概念车
  4. Angular 结合 ng-bootstrap分页
  5. 全国各地土特产一览表5
  6. 手机移动APP的测试
  7. 在Data Guard环境中重做传输压缩 文档 ID 729551.1
  8. imap服务器我响应,imap服务器连接上限问题
  9. mysql 多租户_动态路由数据源(多租户)解决方案
  10. 2022年php真实面试题整理