记 8

113 阅读4分钟

学习一 模块化的“高内聚低耦合”

高内聚:尽可能每个模块成员方法只完成一件事(最大限度的聚合);

低耦合:减少模块之间的交互复杂度(接口数量,参数数据)

一个完整的系统,模块与模块之间,应尽可能的使其独立存在(模块与模块之间的接口,尽量的少而简单)。且每个模块都尽可能的独立完成某个特定的子功能。

如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分,这样有利于修改和组合。

降低耦合度的方法

1、 多使用模块化编程的思想,在编写之初,模块需要做什么功能、以后需要做哪些扩展,需要长时间的考虑。

2、模块的功能化分尽可能的明确。也可以参考生成动态库的原则,删除一个模块(在不调用的情况下)不影响到程序的正常运行。同时暴露出清晰的接口方便其他人调用。

3、尽量少使用全局变量。除了设备配置外,尽量不要使用其他全局变量。模块内可使用仅在模块内有效的变量,引出接口供其他地方使用。

4、同时遵循一个定义只在一个地方出现。

5、多用设计模式,比如采用MVC(模型-视图-控制)的设计模式就可以降低界面与业务逻辑的耦合度。

6、少使用类的继承,类属性和方法的声明少用public,多用private关键字。多用接口隐藏实现的细节。

增强内聚度方法

1、模块只对外暴露最小限度的接口,形成最低的依赖关系。

2、只要对外接口不变,模块内部的修改,就不得影响其他模块。

3、删除一个模块,应当只影响有依赖关系的其他模块,而不应该影响其他无关部分。

模块化的原则

我的原则是无论是做哪方面的程序设计,在前期规划之前,即便花很久的时间,也需要细化为几个方面。把复杂的问题分解为单独的模块后。个人认为模块化设计应该遵循以下几个主要原则:

1.模块的功能要尽可能独立,模块的对外接口要清晰明了。

模块的独立性原则表现在模块完成独立的功能,与其他模块的联系应该尽可能得简单,各个模块具有相对的独立性。

2.模块的规模要适当。

模块的规模不能太大,也不能太小。如果模块的功能太强,可读性就会较差,若模块的功能太弱,就会有很多的接口。太小的模块尽量做成工具类的接口,除了方便以后使用还能简化代码。如果模块功能太强,尽量做到模块的分解(见第三点)。模块功能尽量使用回调或是switch case的嵌套来实现。这样后续开发人员可以在不读懂全部代码的情况下,也能进行有效的维护或是扩展,同时又不对其他分支功能造成影响。

3.分解模块时要注意层次

在进行多层次任务分解时,要注意对问题进行抽象化。在分解初期,可以只考虑大的模块,在中期,再逐步进行细化,分解成较小的模块进行设计。

学习二 Flex和Grid

经常用到flex,明明也学过grid但很久没用了,重新学习一下。

a2856829ce7d060cbe1681f0623f4be0.png

Flex——有弹性的盒子 Flex是一种一维空间的设置,可以设置子级元素在同一行或者同一列的样式。

Grid——将网页划分为网格 Grid是二维平面的网页布局工具。

grid-template-columns(列)和grid-template-rows(行)定义网格的行和列。grid-area定义网格区域,grid-columngrid-row等属性控制当前网格项(网格中子元素)的位置

        A{
           display: grid;  
           grid-template-rows: repeat(2,200px); /* 列的划分 */
           grid-template-columns: 200px 200px 200px; /* 行的划分 */
           /* 这里的值,既可以写具体的xxpx,又可以写xxfr(可以理解为xx份) */
           gap:24px; /* 间隔 */
           grid-auto-flow: column; /* 逐列填充 */
           justify-items: center; /* 在水平方向居中 */
           align-items: center; /* 在垂直方向居中 */
           flex-shrink: 0; /* 防止元素被挤压缩 */
        } 
      
       /* 某个元素跨列 */
        a{
            grid-column-start: 1;
            grid-column-end: 3;
            /* 等同于grid-column: 1/-1; 第一条和最后一条网格线之间的区域 */
        }
      
      或使用**grid-template-areas**和**grid-area**结合
        .item {
            display:grid;
            grid-template-rows: repeat(4,200px);
            grid-template-columns: 200px 200px 200px 200px; 
            grid-template-areas: 
                "header header header header"
                "sidebar content content content"
                "sidebar content content content"
                "footer footer footer footer";
        }
        .item1 {
            background-color: rgb(167,224,8);
            grid-area: header;
        }
        .item2 {
            background-color: rgb(197,35,109);
            grid-area: sidebar;
        }
        .item3 {
            background-color: rgb(0,0,227);
            grid-area: content;
        }
        .item4 {
            background-color: rgb(226,227,9);
            grid-area: footer;
        }

学习三 透明度 、过渡 、动画 、渐变

blog.csdn.net/qq_57567877…