- 博客(38)
- 资源 (3)
- 收藏
- 关注
原创 精进TypeScript--【类型设计】倾向选择总是代表有效状态的类型
如果你看不到代码所操作的数据或数据类型,代码就很难理解。这就是类型系统的一大优势:通过写出类型,让你的代码的读者可以看到它们,而且这也将使得你的代码变得易懂。
2024-04-06 12:44:17
295
原创 精进TypeScript--提供回调中this的类型
JavaScript 的 this 关键字是整个语言中最令人困惑的部分之一。this 是动态作用域:它的值不取决于它怎么定义,而取决于它怎么调用!
2024-04-05 19:18:25
527
原创 精进TypeScript--优选接口的联合,而不是联合的接口
具有多个属性对于联合类型的接口通常是一个错误的选择,因为它们掩盖了这些属性之间的关系
2024-04-04 22:46:28
473
原创 精进TypeScript--你了解类型(type)和接口(interface)的区别吗?
你了解类型(type)和接口(interface)的区别吗?进来瞅瞅~
2024-04-04 02:50:41
488
原创 精进TypeScript--习惯结构类型(Structual Typing)
JavaScript 本质上属于鸭子类型(duck typed):如果你向函数传递具有所有正确属性的值,那么它就不会在乎如何创建该值。掌握结构类型将有助于你理解“正确”与“错误”,并让你写出更可靠的代码。
2024-04-04 01:10:44
1061
原创 精进TypeScript--使用async函数代替异步代码的回调
比起Promise更应优先使用async和await。它们能产生更简洁、更直接的代码,并能消除一大类错误
2024-04-01 01:43:40
846
原创 精进TypeScript--避免你的代码被可推断类型弄得混乱不堪
TypeScript类型推断实践:避免你的代码被可推断类型弄得混乱不堪数的返回类型。
2024-04-01 00:05:42
486
原创 精进TypeScript--private真的能隐藏信息吗?
private访问修饰符只有通过类型系统才能被强制执行。它在运行时没有效果,可以被一个类型断言轻松绕过。不要以为它能保持数据的隐蔽性。
2024-03-31 21:57:38
311
原创 精进TypeScript--选择更精确的字符串类型的替代类型
sting类型的域很大,当你声明一个类型为string的变量时,你应该问问自己更窄的类型是否合适。
2024-03-30 02:10:48
587
原创 精进TypeScript--你了解enum(枚举)吗?
TypeScript赞成使用枚举的理由是,比起直接用数字,枚举提供了更多的安全性和透明度。
2024-03-29 23:11:33
238
原创 精进TypeScript--你了解any类型吗?
Typescript中的any类型有效地静默了类型检查器和Typescript语言服务。它会掩盖真正的问题,有损于开发者体验,并破坏开发者对类型系统的信心。因此,尽量避免使用它!
2024-03-27 00:37:58
999
原创 go入门【Map】 -- 贰
哈希表是一个无序的key/value的集合,其中所有key都不相同,通过给定的key可以在常数时间复杂度内检索、更新或删除对用的value。
2023-09-27 20:44:48
85
原创 go入门 -- 零
Go Modules 是 Go 语言提供的一种依赖管理机制,它可以帮助开发者管理包依赖关系,并提供了一种简单的方法来安装和更新包。原因是:当前使用的 Go 版本已经支持 Go Modules,但是你的代码中的 go111module 指令设置为 off,这意味着 Go Modules 功能被禁用了。每一个模块中都有一个go.mod文件, 文件中有模块的名称,示例第一行:module example.com/greetings。参考官网https://go.dev/learn/3、调用另一个模块的方法。
2023-09-18 19:54:43
1586
原创 【如何做好软件实现设计——复用思维】
We can soive any problem by introducing an extra level of indirection.(任何问题加一层间接就可以解决。) ——图领奖获得者, Butler Lampson。
2022-09-24 15:17:21
212
原创 【前端MVC】如何理解angular的MVC模式
理解MVC模式 近年来,MVC模式也被视为一种方式,来管理日益丰富而复杂的客户端Web开发,Angular就是在这种环境中诞生的。 应用MVC模式的关键是实现关注点分离的关键前提,即应用程序中的数据模型与业务模型和表现逻辑分离。在客户端Web开发中,这意味着分离数据、操作该数据的逻辑以及用于显示数据的HTML元素。结果是客户端应用程序更容易开发、维护和测试。 三个主要构建模块是模型、控制器和视图。下图显示了MVC模式在应用于服务器端开发时的传统阐述。模型一般是从数据库中获得的,而应用程序的目标是为来自
2022-04-28 21:29:12
925
原创 【云原生简介】
云原生这个词由来已久,IT行业也永远不缺乏新概念。2015年,Pivotal公司的马特·斯泰恩(Matt Stine)提出Cloud Native这一概念,并对云原生的概念进行了详细的阐述。云原生的主旨是构建运行在云端的应用程序,致力于使应用程序能够最大限度地利用云计算技术特性的优势,提供更加优质的应用服务。 云原生也是一种构建和运行应用程序的方法,它充分利用了云计算的优势,重点关注如何在云计算交付模式下创建和部署应用程序。云原生应用适用于公共云和私有云,开发人员可以充分利用当前云计算平台上的资源来
2022-03-31 14:23:46
1971
原创 栈和队列—Python实现基本操作
目录概述应用栈栈抽象数据类型概述栈和队列都是保存数据元素的容器。这两种结构支持的元素访问操作包括存入、查看、元素弹出。栈和队列主要用于在计算过程中保存临时数据,这些数据是计算中发现或者产生的,在后面的计算中可能需要使用它们。栈和队列也是最简单的缓存结构,它们只支持数据项的存储和访问,不支持数据项之间的任何关系,因此栈和队列的实现结构只需要保证元素存入和取出的顺序,并不需要记录和保证新存入的元素和容器中已有元素之间的任何关系。栈是后进先出关系...
2022-02-14 20:00:12
1287
原创 Python字符串—正则表达式
Python语言的正则表达式功能由标准包re提供。利用正则表达式可以较容易地实现许多复杂字符串操作。Python正则表达式采用字符串字面量的形式描述(即引号括起的字符 序列)。从Python语言的角度看它们就是普通的字符串,但在用于re包提供的一些特殊操作时,一个具有正则表达式形式的字符串代表一个字符串模式,描述了一个特定的字符串集合。这类操作就是re包提供的正则表达式匹配操作。原始字符串首先介绍原始字符串(raw string)的概念。原始字符串是在Python里书写字符串文字量的一种形式,这
2022-02-12 16:14:45
5033
原创 链表简介—Python实现基本操作
目录单链表链表操作的复杂度单链表类的实现链表的变形和操作选循环单链表双链表线性表的定义:一些元素的序列,维持元素之间的一种线性关系。实现线性表的基本需要是:能够找到表中的首元素(无论直接或者间接) 从表里的任一元素出发,可以找到它之后的下一个元素把表元素保存在连续的存储区里(顺序表),可以满足这两个需求,其中元素间的顺序关联是隐含的。显然,对象之间的链接也可以看作是一种顺序关联,基于它也可以实现线性表。实现线性表的另一种常用方式就是基于链接结构,用链接关系显式表示元素
2022-02-09 20:30:32
2795
原创 重构手法——简化条件逻辑
程序大部分功能来自条件逻辑,复杂度也大多来自条件逻辑。我们有时候需要借助重构把条件逻辑变得更容易理解。比如:分解条件表达式:处理复杂的条件表达式 合并条件表达式:厘清逻辑组合 以卫语句取代嵌套条件表达式:在主要处理逻辑之前先做检查 switch逻辑:以多态取代条件表达式分解条件表达式(Decompose Conditional)本重构手法其实只是提炼函数的一个应用场景。我们可以对条件判断和每个条件分支分别运用提炼函数// 假设计算购买某样商品的总价(总价=数量x单价),商品在冬季和夏季
2022-02-08 21:32:28
683
原创 重构手法——封装
分解模块时最重要的标准,也许就是识别出那些模块应该对外界隐藏的小秘密了。封装的对象可以包括数据结构、基本类型、临时变量、函数等。常见的封装手法如下:数据结构:封装记录或封装集合 基本类型数据:以对象取代基本类型 临时变量:以查询取代临时变量 函数:组合成类 类内部细节:隐藏委托关系封装记录(Encapsulate Record)记录型结构是多数编程语言提供的一种常见特性。它们能直观地组织起存在关联的数据,让我们可以将数据作为有意义的单元传递,而不仅是一堆数据的拼凑。dui'duix.
2022-02-08 08:49:29
523
1
原创 重构测试体系构筑
重构是很有价值的工具,但只有重构不行。要正确地进行重构,前提是得有一套稳固的测试集合,以帮助我们发现难以避免的疏漏。编写优良的测试程序,可以极大提高我们的编程速度,即使不进行重构也一样如此。1. 自测试代码的价值如果你认真观察大多数程序员的时间,就会发现,他们编写代码的时间仅占所有时间的很少一部分。有时来决定下一步干什么,有时花在设计上,但是花费在调试上的时间是最多的。一套测试就是一个强大的bug侦测器,能够大大缩减查找bug所需的时间。确保所有测试都完全自动化,让它们检查自己的测试结果。
2022-01-05 19:08:18
657
原创 代码的坏味道
何时必须重构是没有一个精确衡量的标准的。没有任何量度规矩比得上见识广博的直觉。你必须培养自己的判断力,学会判断一个类内有多少实例变量算是太大、一个函数内有多少行代码才算太长。本章我们举例一些“坏味道条款”,以作参考。1. 神秘命名(Mysterious Name)整洁代码最重要的一环就是好的名字,好的命名能清晰地表达自己的功能和用法。改名可能是最常用的重构手法,包括改变函数声明、变量改名、字段改名。很多人经常不愿意给程序元素改名,觉得不值得费这个劲,但好的名字能节省未...
2022-01-02 15:42:58
476
原创 重构的第一步
如果你要给程序添加一个特性,但发现代码因缺乏良好的结构而不易于进行更改,那就先重构那个程序,使其比较容易添加特性,然后再添加该特性。重构的第一个例子//plays.json...{ "hamlet": {"name": "Hamlet", "type": "tragedy"}, "as-like": {"name": "As You Like It", "type": "comedy"}, "othello": {"name": "Othello", "t...
2021-12-30 01:49:56
229
原创 《重构》——写在前面
高僧有偈云:“时时勤拂拭,勿使惹尘埃”。用这句话来勉励我们这些码农,也是对我们在搬砖的道路上,追求卓越,精进技艺的一种鞭策。何为重构?怎样才能做好重构?这些问题小编也在时时思考和实践,对于马丁.福勒的这本书也是时时翻阅,为了提炼精华,总结要点,方便后面查阅,也为了能跟广大码友有共同切磋,一起进步的机会,后面我会对这本书的精华做些总结,欢迎来踩~识别坏味道、测试先行、行为保持的变更动作,是重构的基本功。重构这门技艺,以及福勒先生撰写《重构》的态度,代表的是软件开发的匠艺--对“正确的做事方式”的重视。
2021-12-23 13:55:26
228
原创 工厂模式—创建型模式
在工厂设计模式中,客户端可以请求一个对象,而无需知道这个对象来自哪里,即使用哪个类来生成这个对象。工厂背后的思想是简化对象的创建,对象的创建和使用解耦。工厂模式的两种形式:一是工厂方法(Factory Method),对不同的输入参数返回不同的对象;二是抽象工厂,它是一组用于创建一系列相关事物对象的工厂方法。1. 工厂方法在工厂方法模式中,执行单个函数,传入一个参数,但并不要求知道任何...
2020-04-02 17:14:02
145
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人