最好的编程语言是怎样的?

简介: 最好的编程语言是怎样的?

没有语言是完美的。


因语言演化,不同时期不同版本的程序员写的代码,在用同一门语言在编程。所以,我们经常看到各种不同时期风格代码并存。

新的语言特性都是为提高代码表达性,减少犯错几率。多用新语言特性写代码,绝对没毛病!


那应该如何使用“新”语言特性,让代码写得更好?

Optional

image.png

暂不考虑缺乏封装问题。这段代码有问题。因为未考虑对象可能为 null。

更好的写法:

image.png

这种写法很稀缺,所以,新项目总是各种NPE。如果你要问程序员为什么不写对象为 null 的判断,答曰:忘了。


空指针的发明者 Tony Hoare 将其称为“自己犯下的十亿美元错误”。


还好Java 8有Optional,它提供了一个对象容器,你需要从中“取出(get)”你所需要对象,但取出前,你需判断该对象容器中是否真的存在一个对象。

image.png

你再不会忘掉判断对象是否存在,因为你需要从 Optional 取出存在里面的对象。正是这多余的一步,避免你“忘”了。

更简洁的写法:

image.png

项目中所有可能为 null 的返回值,都要返回 Optional,可大大减少各种意外惊喜。

函数式编程

image.png

准备参数的代码:


  • 筛选出审核通过的章节
  • 再把章节转换成与翻译引擎通信的格式
  • 最后把所有得到的单个参数打包成一个完整的章节参数。


Java8后,不是不需要遍历集合,而是有了更好的遍历集合方式。函数式编程,大部分操作都可归结成列表转换,最核心的列表转换就是 map、filter 和 reduce。


大部分循环语句都是在对一个元素集合进行操作,而这些操作基本上都可以用列表操作进行替代。


再CR这段代码,有一循环语句,这循环语句在处理的是一个集合中的元素,可用列表转换:

image.png

有人可能说这段代码还不如我原来的循环语句简单。两种写法根本差异是抽象层次不同,可读性完全不同:


  • 循环语句是在描述实现细节
    必须要做一次“阅读理解”知晓其中细节才能知晓整个场景
  • 列表转换的写法是在描述做什么
    基本上和我们用语言叙述过程对应。


其实大多数人选择循环语句只是因为对列表转换不熟练,多写即可。


为什么我的感觉实践中,使用这种风格,为写出来的代码更难理解?

你在列表转换过程中写了太多代码!很多人直接在列表转换过程中写 lambda。lambda 本身相当于一个匿名函数,所以,很多人写成长函数了。

lambda 是为了写短小代码提供的便利,所以,lambda 中写出大片代码,根本就是违反 lambda 设计初衷的。最好的 lambda 应只有一行代码。


那若一个转换过程中就有很多操作咋办?


提取出一个函数!就像 toSectionParameter:完成从 Section 到 SectionParameter 转换。这样一来,列表转换的本身就完全变成了一个声明,这样的写法才是能发挥出列表转换价值的写法。

总结

代码风格逐步演化,每个程序员对语言的理解程度都有所差异,所以,我们的屎山项目中,各种代码风格并存,各具风骚,加重代码理解难度,这其实就是:不一致的坏味道。


编程风之所以格会过时,是因为它存在问题,新风格就是用更好方案,注意跟上时代,拥抱变化,多用新特性!

目录
相关文章
|
人工智能 开发框架 物联网
为什么 C# 可能是最好的第一编程语言
C# 是一个全面领域的全能型语言,结合新时代的 .NET 平台,与时俱进的发展创新,未来无限可期!对于带着有色眼镜看待的人们,是否该刮目相看了呢?下面看看行业大佬关于 .NET 的解说。
1138 2
为什么 C# 可能是最好的第一编程语言
|
1月前
|
安全 编译器 程序员
了解编程语言的安全
【7月更文挑战第11天】本文介绍编程语言中的类型的安全与效率:安全不仅关乎防止错误,也影响性能和可预测性。
19 0
了解编程语言的安全
|
3月前
|
JavaScript Java iOS开发
编程语言有哪些?
【5月更文挑战第22天】编程语言有哪些?
101 10
|
3月前
|
机器学习/深度学习 人工智能 测试技术
年度编程语言将花落谁家
年度编程语言将花落谁家
|
JavaScript 前端开发 Java
常用的编程语言
世界上最常用的几种语言
101 0
|
JavaScript 前端开发 Java
编程语言
编程语言
|
Rust Ubuntu 编译器
“C 不再是一种编程语言”
本文标题里的观点很“刺激”,它来自国外一位 Swift 和 Rust 专家 Aria Beingessner,他近日撰写了一篇文章《C 不再是一种编程语言》,在技术社区引起了热议。
192 0
“C 不再是一种编程语言”
|
Web App开发
2011年需要关注的9大编程语言
导读:本文作者Rob Diana是国外知名技术博客Regular Geek的创始人,曾写有大量关于编程语言以及语言职位需求趋势的文章。这篇博文中,Diana将通过对Tiobe编程榜和编程语言职位需求方面的数据分析,展望编程语言未来一年的发展。
1000 0