写点什么

代码精进之路学习笔记

用户头像
escray
关注
发布于: 2021 年 05 月 27 日
代码精进之路学习笔记

极客时间《代码精进之路》学习笔记

02 | 把错误关在笼子里的五道关卡


下面的这段代码,有很多疏漏的地方。你看看自己读代码能发现多少问题?


package com.example;import java.util.Collections;import java.util.List;import javax.net.ssl.SNIServerName;
class ServerNameSpec { final List serverNames;
ServerNameSpec(List serverNames) { this.serverNames = Collections.unmodifiableList(serverNames); }
public void addServerName(SNIServerName serverName) { serverNames.add(serverName); }
public String toString() { if (serverNames == null || serverNames.isEmpty()) return "<no server name indicator specified>”;
StringBuilder builder = new StringBuilder(512);
for (SNIServerName sn : serverNames) { builder.append(sn.toString()); builder.append("\n"); }
return builder.toString(); }}
复制代码


  1. serverNames 没有初始化

  2. 参数 serverName 没有判 Null

  3. if 的缩进有问题

  4. builder 有可能溢出

03 | 优秀程序员的六个关键特质


极客时间《代码精进之路》专栏,《03 | 优秀程序员的六个关键特质》里面提到了优秀程序员的六个特质,分别是:


  1. 掌握一门编程语言

  2. 解决现实问题

  3. 发现关键问题

  4. 沉静的前行者

  5. 可以依赖的伙伴

  6. 时间管理者


对照检查一下:


熟练操控一门编程语言


我比较熟悉的编程语言是 C# 和 Ruby,对于  JavaScript 和 Python 略微了解,接触过 Java,也许已经能够发现问题了,就是没有特别精通的某一门语言。因为最近在写一个 Rails 的项目,所以打算在 Ruby 上多下点功夫。


深入理解问题,懂得问题的最核心价值


我个人的问题主要还是在于编码时间比较少,所有对于现实问题接触的不够多,也就谈不上深入理解问题,导致缺乏行业经验。解决方案自然是多写有用的程序。


能够发现编程语言的缺陷和工具的局限能够发现解决方案背后的妥协和分享能够敏锐的观察到产品的关键问题能够发现关键的问题,升级成为一个主动找事情的程序员


这一点我可能相对较弱,首先就是主动性不够,另外缺乏对于整个产品或者方案的全局考虑,更多的是从自己手头的代码来思考问题。


懂得妥协,懂得选择,超前推动事情


这一点虽然没法举出具体的事例,但是从我自己的性格上来说,妥协和选择并不困难,另外推动事情的意识也有,需要在实际项目中继续磨炼。


如果说,编程语言、花样工具、罗辑思维、解决问题这些“硬技能”可以决定我们的起点的话,影响力、人际关系这些“软技能”通常影响我们可以达到的高度。


之前更多的关注“硬技能”的学习,多少有些忽视“软技能”。我能理解“软技能”的重要性,但是在日常工作中并没有特别注重这方面的内容,感觉自己处于“中间”地带。“80% 以上的司机都认为自己的驾驶水平在平均线智商”。


坚持把时间用在对的地方,用在价值更大的地方要做只有你才能做的事情要坚持做需要做的事情


我不算一个好的时间管理者,处于阶段性的努力和间歇性放纵的模式。


对照完毕,不出意料的发现自己不是一个优秀的程序员,不过总算有了努力的方向。“知道那么多道理,却总是没法成为优秀的程序员”。对我来说,践行更为重要。

发布于: 2021 年 05 月 27 日阅读数: 29
用户头像

escray

关注

Let's Go 2017.11.19 加入

Let's Go,用 100 天的时间从入门到入职

评论

发布
暂无评论
代码精进之路学习笔记