凡事就怕问为什么(认识的升级)系列一

2020-12-17 15:24:55 +08:00
 Braisdom

首先,V 站是个很好的平台,活跃度很高,同时能听到各种不同的声音,修正自身的认知。这个系列是我一直都想整理的,它是我以前在面试时经常会问的问题,很多同事希望我能把比较准确的答案整理出来,大家互相学习。借着这段空闲的时光,认真整理一下,共勉。

很多时候,我们学习一门知识或科学,在编程领域学习一门编程语言或第三方框架,体系化的知识总是能很快掌握,但背后隐藏的规律和原理却不容易被发现。本质上,那些原理和规律是我们已经知道我们不知道的东西,其背后还有很多我们不知道我们不知道的东西,这就需要我们学会不断的问为什么?以 Java 编程和 OO 为基础:

还有很多,甚至会问为什么会出现 Java 语言?设计模式的作用是什么?为什么它会流行等等,不断的问自己为什么,其实就是一种认知的提升。这种哲学式的思辨,也能树立自身的理论,而不是只会认为:它本来就这样,大家都这么用,我也这么用了。现有的所谓系统化的理论,只是教给你知识,却很少告诉你为什么?很多知识只是告诉你创新的结果,却很少告诉你创新的过程和原始的动力,“凡事就怕问为什么” 系列,我以我的认知水平描述一系列“为什么”背后的规律和初衷,欢迎讨论和批评。

系列一:为什么要定义一个 Method

Java 中的 Method 是传统数学的过程化的概念,它的定义和表现形式不再详述,只是从最原始的角度分析?在我们编程的过程中,定义一个 Method 的场景有哪些,寻找其背后的规律,从而形成自身的理解。

面向对象中,Method 被定义为对象的“行为”,是沿用传统过程化编程的概念,将复杂问题逐步分解的一种编程方式,起到描述业务实现逻辑的作用,既然是描述业务特性,其命名就应以业务概念为基础,相互协作的方式也应遵循业务领域中的逻辑特征。当然,业务逻辑的代码实现过程中,也会存在纯粹的程序化的概念,或者交织的概念,这些概念所产生的 Method 没有固定的标准,其实也就是对纯粹程序化概念的英文命名的习惯而已,可以参考 JDK 的代码或者 Apache 项目的代码。

经过上面三种方式的定义,我们基本可以理解为什么要定义一个方法,以及常见的定义方法的必要性,通俗点讲,就是将问题不断分解,使得每个过程都能清晰描述业务实现。我按我的理解, 再补充几点容易识别的必要性:

总得来说,代码不仅是写给机器执行的,更多的是写给人看了。代码是活着的业务文档,注释是补充说明,更多的是需要可运行的代码说明。上述只是我个人的见解,欢迎补充和挑战。

本人最近在找工作,有合适岗位的可以联系我:微信:braisdom

我的开源项目: https://github.com/braisdom/ObjectiveSql

该文档的确存在推广的嫌疑,但请理解。作为一个开源的作者,总希望更多人知道,我在不断推广的同时,也能体现项目的价值和我对项目的期待,如果项目对大都数人都没有任何意义,相信我也会很快放弃。

6595 次点击
所在节点    程序员
70 条回复
lance6716
2020-12-18 13:31:51 +08:00
第一个问题:Method 指的是 https://en.wikipedia.org/wiki/Method_(computer_programming) 这个吗? method 相对于 fucntion (self, ...) 的形式有啥优缺点?(对于编译型语言)在可执行文件中这两者哪种是更天然表达的?
zypy333
2020-12-18 13:48:08 +08:00
要是能带代码说就更好了
Braisdom
2020-12-18 13:49:05 +08:00
@zypy333 好想法,后续可以完善
wanglulei
2020-12-18 14:24:30 +08:00
如果有 demo,解释说明我觉得会更棒。持续关注一波。
charlie21
2020-12-18 14:54:37 +08:00
他们这个说法有一致性即可 自圆其说即可
有的人还出书呢 还卖得挺好。为什么呢?他懂得不被别人牵着鼻子走
janus77
2020-12-18 15:22:01 +08:00
以前看过一篇文章,里面一个核心观点,全都是为了复用。
method 是为了复用
class 是为了复用
abstract 是为了复用
interface 是为了复用
整个 OOP 的核心思想就是复用
hihanley
2020-12-18 15:36:35 +08:00
持续关注,但是这里似乎不太方便阅读,如果能将文章和有意义的讨论放在博客中会不会更好?
就像[为什么这么设计系列文章]( https://draveness.me/whys-the-design/)一样
hihanley
2020-12-18 15:37:18 +08:00
持续关注,但是这里似乎不太方便阅读,如果能将文章和有意义的讨论放在博客中会不会更好?
就像 https://draveness.me/whys-the-design/
lzk50136
2020-12-18 17:12:03 +08:00
我服了。。。又来了。。。
Braisdom
2020-12-18 17:16:34 +08:00
本人寻找工作,有兴趣内推的联系我:微信 braisdom

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/736407

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX