一、续言

在前文《如何成为一名架构师?》,链接:http://www.mybatis.cn/archives/660.html,提到了成为架构师所需要的几个条件:

(1)扩展知识面,不要仅限于Java
(2)要有悟性,能左右逢源
(3)要做到系统化的学习
(4)要做到时空上的系统化

以上四条说教,都不是空谈和口号,都可以在实际生活中找到落地行为,本文从“赋值运算符”这个知识点切入,谈谈如何做到。

另外,希望通过赋值运算符这个技术点的介绍,启发出:量变引发质变、简单但不肤浅的学习理念。

有的人说:文章里面说的“a+=1”这种形式,我也经常用,但是,比如 “a%=10”,这种我很少用。其实,这说明并没有真正的吃透赋值这个知识点,不应该只有加减乘除这些地方会很自然的想到用“a+=1”这种想法,而是任何赋值都应该能自如的运用,才算是真正的掌握。

赋值分为三种情况:(1)傻瓜型的:a = a+1;(2)有灵性的赋值:a += 1;(3)没人性的赋值 :a=1,中间不能带空格。

最后,说明一下,关于架构师的内容,不会写太多了,其实很多时候,我们可以举一反三,所以此分类下的文章往往点到即可:

http://www.mybatis.cn/category/architect/

二、前言

我喜欢写简单内容的文章,并不是因为我的知识简单,而是我善于把复杂的知识阐述的非常简单。

举例来说,Hadoop的资源管理器yarn其实是非常复杂的,但是换个角度来看,它又与生活中的某些场景非常类似,从而变得非常简单明了。

不在于知识的复杂还是简单,而在于你的挖掘和理解。简单的知识,你可要挖掘出其他关联的方面,从而完成量变引发质变的过程,体会简单但不肤浅的道理;复杂的知识,你理解的很透彻,那么将变得跟喝白开水一样平淡,不像是知识。

三、正文

1、代码充满灵性

我们羡慕别人写的行云流水,充满灵性,而我们自己的代码却粗制滥造,充满无奈。

什么算是灵性呢?简单的说,就是充满想象力、有内涵。下面的代码例子很好的说明了灵性为何物。

public class AssignDemo
{
    public static void main(String[] args)
    {
        int a = 100;

        a = a + 1; //写法一

        a += 1; //写法二

    }
}

欣赏一下上面的代码,我们可以感受到:a += 1 比 a = a + 1 更有想象力,更有内涵。

所以,我们能感觉到:写法一比较呆板,而写法二则充满灵性。

2、代码灵性的背后:量变到质变

俗话说:量变引发质变。我喜欢引用这个哲学道理。此种道理,很多人听了千遍万遍,但是还是体会不到。我不太喜欢说空话,总是想找个实际的东西让哲理落地。什么是量变,什么是质变呢,眼下有个绝好的例子,正好诠释了量变和质变。

代码灵性的背后源于:知识点的量变(足够多知识点的积累)到编码手法的质变(代码写得有灵性)。

质变并不重要,最重要的量变。足够多的量,自然而然导致质变,所以,刻意积累足够的知识点,才是我们当前的要务。就拿上面提到的赋值运算符来说,其知识点就包括很多,如下所示:

(1)=,简单的赋值运算符,把右边操作数的值赋给左边操作数,例如:C = A + B 将把 A + B 的值赋给 C
(2)+=,加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数,例如:C += A 相当于 C = C + A
(3)-=,减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数,例如:C -= A 相当于 C = C - A
(4)*=,乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数,例如:C *= A 相当于 C = C * A
(5)/=,除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数,例如:C /= A 相当于 C = C / A
(6)%=,求模且赋值运算符,求两个操作数的模赋值给左边操作数,例如:C %= A 相当于 C = C % A
(7)<<=    ,左移且赋值运算符,例如:C <<= 2 等同于 C = C << 2
(8)>>=,右移且赋值运算符,例如:C >>= 2 等同于 C = C >> 2
(9)&=,按位与且赋值运算符,例如:C &= 2 等同于 C = C & 2
(10)^=    ,按位异或且赋值运算符,例如:C ^= 2 等同于 C = C ^ 2
(11)|=    ,按位或且赋值运算符,例如:C |= 2 等同于 C = C | 2

3、代码灵性的背后:联想与想象

以上列出了11种Java语言的赋值运算符的写法,如果你感觉不够解气,还可以再联想到shell的赋值规范。

虽然shell的赋值规范只有一条,但是不能以体量大小做评判标准,而是以维度来做依据。

shell这条赋值规范,很奇葩,让熟悉Java赋值规范的人痛不欲生:=两边不能有空格。变量的赋值形式是:var=value,而var = value,则表示相等。

4、小结

虽然赋值操作看似简单,但是里面的门道却很多。把这些门道用心的去摸索一下,自然就能体会到质变的感觉,必定让自己的代码写的更有灵性。

聪明的人往往能够举一反三,赋值操作尚且如此,其他的复杂知识点往往更应如此。但是很多人的表现,往往犹如一只知了,这知道,那知道,其实,知道和会用不是亲戚关系,而是两回事。就拿张作霖和张作相来说,看似亲兄弟,其实非亲非故。

千里之行始于足下,任何一个立志成为变成王者的开发者,必须先把基础打牢:从量变到质变。

标签: none

添加新评论