宋氏极简美学的编码风格

宋朝人的美学,叫极简

在这里插入图片描述

宋朝的美学语言,叫极简。
老子曾言:“万物之始,大道至简。”
极简,是一种哲学态度,更是一种美学语言

宋人的极简,是简单

宋人喜欢自然朴素的美,不喜欢大肆雕琢,瓷器多以釉色、器形取胜。
在这里插入图片描述
在这里插入图片描述

宋人的极简,是含蓄

南宋画家马远,又被称为“马一角”。最著名的当属这幅《寒江独钓图》。

一叶扁舟,渔翁一人,四周一片空白。可是,从渔翁微倾的身体,稍弯的鱼竿,翘起的船尾,仿佛望得见浩浩渺渺的江水,能感受到他一望无际的孤独。

空白之处,并非无一物,而是蕴含着深邃的孤独,辽远的时空。
在这里插入图片描述
中国的山水画,亦是从马远和夏圭开启了新的格局,夏圭又称“夏半边”。山水不再是全景式,而是取一景、一角、半边,却以小见大,以无胜有。
在这里插入图片描述

留白之处,自有气象万千,自有时空无限。

月满则亏,水满则溢,花不可太盛,话不说太满,含蓄是一种隽永,美在半半之间。

宋人的极简,是含蓄。

宋人的极简,是清雅

宋徽宗自创了瘦金体,笔法瘦劲,运笔灵动,如一枝枝瘦梅,在清冷的月夜里,自在地挺立、飘逸着。

瘦,是山寒水瘦。金,却是人间最贵、最亮的色。

在这里插入图片描述
在这里插入图片描述
有人说:“内心越是丰盈,生活越是素简。”
在这里插入图片描述
不同于唐朝的张扬外放,更不同于明清的繁复华贵,宋人在美学上如一叶扁舟,往青草更青处漫溯,又似一路孤行,往悬崖孤岭处登极。

宋人的极简,在雨过天青时,在无声留白中,在字里与行间。
在这里插入图片描述

唐宋美学对比

唐朝讲究华美富贵,讲究大气排场,是当时唐代盛极一时的社会现状的产物,而宋代更讲究意境,讲究留白,更注重心灵上的沉淀。
唐朝以富贵胖为美,宋朝以清瘦为美,大唐的开放包容,大宋低调内敛。

抽象的力量

没有抽象思维,就没有人类光辉灿烂的现代文明。
赫拉利在《人类简史》里说,人类之所以成为人类,是因为人类能够想象。这里的想象,作者认为很大程度上也是指抽象能力。正是这样的抽象思维帮助人类能够从具体事物中,抽象出各种概念,然后再用这些概念去构筑种种虚构故事。这些概念,包括政治(例如民族、国家)、经济(例如货币、证券)、文学、艺术和科学等,都是建立在抽象的基础之上。
在这里插入图片描述
怎么样? 是不是够抽象,只是几根线条,不过这几根线条是做了高度抽象之后的线条,过滤了绝大部分水牛的细节,只保留了牛的最主要的一些特征,正因为其抽象层次更高,因此,其泛化能力更强,不仅可以表示水牛,什么黄牛、奶牛、野牦牛只要是牛都逃不过这几根线。

编码的宋式美学

在设计和编码的过程中,我么往往追求简单、清晰、易读、明了,以极少的元素表达复杂的事物。
抽象就是应对事物复杂之道,抽象意味着简单、容易理解、以少胜多、给人以美的感受,不同层次的抽象有不同的表达能力,犹如宋氏美学中的含蓄与留白。

Spring Data的设计是典型的宋氏极简美学的应用,通过一个极简的抽象Repository<T, ID>开始,构筑了非常统一的、简洁明了的所有持久数据库的访问,以一个非常简单的范式统一了所有的关系型、非关系型等各种数据仓储。

万物之始,大道至简

@Indexed
public interface Repository<T, ID> {

}

下面是spring-data-jpa的继承图,非常的简单清晰,
在这里插入图片描述
下面是spring-data-mongodb的继承图,非常的简单清晰而且风格与JPA高度统一。
在这里插入图片描述
上面的设计极简、易用、结构化、好理解,能给人以美的享受。

在举一个例子,Java中的List删除特定的元素。可以看到宋氏美学的编码风格简单明了。

	// 正常写法
    public static void remove1(List<String> list, String target) {
        Iterator<String> iter = list.iterator();
        while (iter.hasNext()) {
            String item = iter.next();
            if (item.equals(target)) {
                iter.remove();
            }
        }
    }
   // 宋氏美学的极简编码风格
    public static void remove2(List<String> list, String target) {
        list.removeIf(Predicate.isEqual(target));
    }

最后一个例子,直观的感受就是:简单就是美,少及是多,给人以易读、美个感受。

    public static long count1(List<Integer> list) {
    	// 正常写法
        long count = 0;
        for (Integer item : list) {
            if (item > 20) {
                count++;
            }
        }
        return count;
    }
    public static long count2(List<Integer> list) {
        // 宋氏美学的极简编码风格
        return list.stream()
                .filter(item -> item > 20)
                .count();
    }

参考文献

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页