代码设计相关知识
-
从OKHttp框架看代码设计从OKHttp框架看代码设计在Android端,比较有名的网络请求框架是OkHttp和Retrofit,后者在网络请求又是依赖OkHttp的。所以说OkHttp是Android世界里最出名的框架也不为过,今天,我们就来认真分析一下这个框架,依照我务实的风格,这篇文章绝对不会是为了读源码而读源码。HTTP简介分析这个Http框架,我们就先从Http谈起,Http是互联网上应用最普遍的通讯协议。而所谓通讯协议,就是指通讯双方约定好传输数据的格式。所以要理解Http,只需要理解Http传输数据的格式,下面是Http数据传输双方的大致的数据格式。上图列出的并不够详细,因为我们并不是想研究Http本身。从上图可以看到,一个Http请求本身其实很简单。从客户端的角度来看装配Request(涉及到请求方法,url,cookie等等)Client端发送request请求接收服务端返回的Response数据是不是简单到令人发指?说起来这和大象装冰箱其实还蛮像的。一个简单的OkHttp请求结合上面的步骤,我们来看看在OkHtt
-
设计模式之美学习(五):哪些代码设计看似是面向对象,实际是面向过程的?常见的编程范式或者说编程风格有三种,面向过程编程、面向对象编程、函数式编程,而面向对象编程又是这其中最主流的编程范式。现如今,大部分编程语言都是面向对象编程语言,大部分软件都是基于面向对象编程这种编程范式来开发的。 不过,在实际的开发工作中,总以为把所有代码都塞到类里,自然就是在进行面向对象编程了。实际上,这样的认识是不正确的。有时候,从表面上看似是面向对象编程风格的代码,从本质上看却是面向过程编程风格的。 哪些代码设计看似是面向对象,实际是面向过程的?
-
投稿007期|令人震惊到发指的PyObject对象代码设计之美前言 最近在重温经典漫画《SlamDunk》的全国大赛篇,其中的一个情形可以很好的诠释虎躯一震这个状态——当樱木看到流川枫一次高难度投篮时内心的感受:“经过两万次射球练习后,樱木首次明白到流川枫这一球是相当厉害的,那正是他在两万次射球练习之中,经常在他脑海中出现的理想射球姿势”。 言归正传,其实对大多数程序开发人员来说,以上这个场景的感慨状态有时候也出现在我们看到经典代码的时候。最近正在思考关于Python语言的源生设计机制,有个问题不知道大家是否也有思考过:我们知道Py
-
以实现一个filter过滤器为引子,浅谈前端代码设计之美 首先呢,Array对象下的方法——filter,map啊等等我们用得很爽,那偶尔有木有问下自己?能否也自己来实现一个?当然啦,实现这个其实很简单,我们一起来实现一下吧。 我们先看下filter是什么,有什么用? 在实际业务场景中,可能会遇到这样的情况: 假设随便 一个数组是这样的:[1,2,3,4,5,6,9,-2,312],我想拿到数组中所有大于0的数,该怎么办? 你说,这个很简单啊,一个for循环搞定。是的没有错,比如下面这样: 假设说,现在又有一个需求来了,要取小于0的所有数...你是不是又写一个简单的函数?大于100的呢?假设数组里面的成员不是数字,而是字符串,要你输出某些长度等于多少的成员呢?按照原来的方式,你是不是得一个个
代码设计相关课程
代码设计相关教程
- 3. 设计原则 那么使用设计模式能为软件开发带来什么好处呢?这要从设计模式的设计原则说起,一般来说有6大原则,如下:单一职责原则顾名思义,一个类最好只有一个职责。这样的好处是引起类发生变化的原因会很少。我们开发新需求的时候,就会很少去修改这个类。而且职责越单一也越容易被复用。开闭原则软件应该对扩展开放,对修改关闭。通俗易懂的说,就是你的软件不能因为加功能,就不断地修改已有的类。而是应该通过增加类,以插拔的方式来实现。举个例子,Macbook的变压器插头是可以替换的,如果说某一天插口的标准换了,那么苹果只需要开发一个新的插头就好了,而不需要重新开发整个变压器。开闭原则确保了代码最大程度的可复用性。并且确保了成熟代码的稳定性。里氏代换原则子类型可以替换掉自己的父类。这意味着我们编写的软件,所有使用父类的地方,都可以替换为子类对象,而程序的行为不会发生改变。通过里氏代换原则,我们可以实现开闭原则,通过增加子类实现新的功能,而不是不断地修改父类。在需要的地方则用子类代替父类。如何实现里氏代换原则呢?首先子类不能重写父类的非抽象方法,一旦重写了非抽象方法,就会改变父类的行为。但是子类可以增加自己的方法和属性,以此达到扩展的目的。依赖倒转原则简单说就是应该依赖接口,而不是实现。也就是我们常说的面向接口编程。这样类和类之间就不会直接依赖,从而能够实现开闭原则。类依赖接口,当需要扩展的时候我们可以替换实现。迪米特法则也称为最少知道原则。如果两个类没有必要直接通信,那么两个类就没有必要相互作用。可以通过第三方来间接调用。类之间的耦合度越弱,越容易被复用。在弱耦合的关系中,一个类的修改,造成的影响会很小。所以我们在做设计的时候需要考虑哪些应该对外暴露,哪些应该封装起来。不同功能模块间的调用,应该由更为高层的类来实现,从而屏蔽掉底层的实现。接口隔离原则接口隔离原则指导你如何设计接口。不要让接口变得臃肿,而是应该把接口按照行为不同细拆。比如你要生产一把可以拼刺刀的步枪,那它应该实现两个接口,刀的接口和枪的接口。而不是使用一个接口覆盖所有刀和枪的所有行为。这样不同的接口可以组合使用。而且如果你只需要刀或者枪的行为,可以单独实现需要的接口, 不需要实现一个大而全的接口,从而去实现很多用不到的方法。如果你的代码满足以上设计原则,就会更为健壮、灵活和优雅。那么如何做到上面这些原则呢?很简单,学习好设计模式,灵活运用设计模式解决你的问题。
- 4. 为什么要学习设计模式 前面已经给出了设计模式的定义----为解决特定的问题,一套通用的、可重用的软件设计方案。我们面对的问题不一样,需要选择不同的设计模式来解决问题。这就好比木匠有 20 种工具,分别用于做不同的事情。而设计模式就是软件设计的工具,根据你遇到的问题不同,供你选择使用。而学习设计模式的目的,就是让你熟知工具的样子,工具能够做什么事情,解决什么样的问题。当你再遇到设计问题时,自然就会想到采用什么设计模式来解决。设计模式有多厉害呢?我可以讲一个亲身经历,曾经我有一位同事写了一段代码来完成一个功能。code review时,我和他说你可以看一下设计模式,这段代码使用XX模式来实现会更为的优雅。两天后他找到我说:“设计模式太厉害了!感觉我前几年代码都白写了!” 你不要觉得夸张,他的这个感觉,也是我初学设计模式后的感觉----原来程序还可以这么写!以前我们解决问题的工具是锤子、斧子,而现在全都是机械化工具。设计模式就是这么神奇的东西。
- Lambda 表达式的设计原则 Java 编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计,这里我们主要讨论在 Lambda 表达式的环境下来设计我们程序时的两点原则:单一原则 和 开放闭合原则。
- 4. Django 代码规范 最后的是 Django 代码规范,也是 Python 代码的规范。总结个人在看源码以及在写代码之间尽量避免的一些问题:不要重复代码!不要重复代码!不要重复代码!重要的事情说三遍。在 Python 开发中,我们尽量不要写重复代码,将同一个功能的代码尽可能封装成函数以供调用;python 代码中变量、函数、类的命名,尽量有含义,比如下面定义的 Connection 类:class Connection(BaseConnection): def __init__(self, host, port, user, passwd): ... # 远程执行shell命令 def run_command(cmd): ... # 上传文件到远端服务器 def upload_file(source_src, dest_src, mode): ... # 从远端服务器上下载文件 def download_file(remote_src, dest_src, mode): ... ...可以看到,这里 从 类名到参数,到函数名都能从名称上推测出其作用。不要盲目在一个函数中堆砌代码。一个函数内的代码尽量控制在如 50 行内,每行的代码的长度也不要过长,容易引起视觉反感;如果有能力,需要多学习一些设计模式相关知识,还有 Python 的各种高级用法。有时候不是为了酷炫,而是这样使用能做到非常好的简化代码和封装代码;此外,尽量使用一些做的比较好的第三方插件,比如 DRF 帮助我们快速实现 Web API 接口,同时还提供了认证相关功能,可以让我们简化开发难度,而且提供良好的代码风格。在一些情况下,尽量避免自己重复造轮子,而且造的是差轮子;编写函数测试用例。这个是很多开发工程师不愿意做的但是又十分重要的一点。对于一些重要函数,我们一定要记得给这个函数设计一个测试用例,避免后续有人接收是改动该函数能及时发现异常以上是我在工作中的一些体会,主要是在开发中碰到的一些常见的规范问题。有些公司的代码规范会详细到如何定义好的变量名、对注释的限制等等。养成良好的 Python 代码规范是项目中的一个重要环节。一个非常好的途径就是去学习 Python 项目的相关源码,这里推荐的有: Flask、Django、Ansible 等流行的开源项目,从中可以学到不少设计模式以及 Python 中的高级用法。
- Kotlin 如何实现其他常用设计模式 前两篇文章都详细分析了 Kotlin 如何实现常用的单例、代理设计模式。并且从代码实现和使用场景分别对比了 Java 和 Kotlin。那其实总共有 23 种设计模式,不可能每一种都能详细介绍,那么这篇文章会继续介绍 Kotlin 实现其他设计模式方法,因为篇幅有限,不会特别详细对比 Java 中的实现。
- 设计模式简介 相信你只要接触过软件编程,那么一定听说过设计模式。所谓设计模式,是为解决特定问题,一套通用的、可重用的软件设计方案。我们通常所说的设计模式,是针对面向对象语言而言。对于每一位使用面向对象语言的从业者,在学习完该语言的基础知识后,也一定了解如何编写面向对象的程序。但是,面向对象究竟有什么好处,我们又应该如何灵活运用面向对象来设计程序呢?
代码设计相关搜索
-
daima
damain
dart
dataset
datasource
datediff
datediff函数
datepicker
datetime
db4o
dbi
dcloud
deallocate
debian安装
debugger
debugging
declaration
declarations
declare
decode函数