首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何避免自己写代码成为别人眼中一坨屎!

普通工程师堆砌代码,优秀工程师优雅代码,卓越工程师简化代码如何写出优雅整洁易懂代码一门学问,也是软件工程实践里重要一环。...,也有部分笔者工程实践总结。...,git可以干的事情不要交给代码; 源代码html注释一种厌物, 增加阅读难度; 注释一定要描述离它最近代码; 注释一定要与代码对应; 公共api需要添加注释,其它代码谨慎使用注释; 典型烂注释...; 某个公共函数调用私有函数紧随其后; 最理想参数零参数,最长不要超过三个入参,尽量不要输出参数: 如果函数传入三个及以上参数最好将其抽象为类; 标识参数十分丑陋,向函数传入布尔值用于区分不同业务做法很丑陋...API,保持对他们熟悉程度; 简单设计: 运行所有测试; 不可重复; 表达了程序意图; 尽可能减少类和方法数量; 以上规则按重要程度排列; 无论设计系统或者单独模块,别忘了使用大概可工作最简单方案

52520

且与 C、C++ 和 Java 都不同?

但是,从 int 继承出 bool 将极大地简化实现(部分原因,所有调用PyInt_Check() C 代码都可兼容——它对于 int 子类会返回 true)。...另外,认为符合可替换性(substitutability)概念:代码需要 int 时,可以喂入 bool,它等同于 0 或 1。...当向人们在交互式终端展示比较运算符时,认为这有点难看: >>> a = 13 >>> b = 12 >>> a > b 1 >>> 如果这样的话: >>> a > b True >>> 每次会少花一毫秒时间思考打印出...operator 模块断言方法也被改为返回布尔值,包括operator.truth()。 由于 bool 继承自 int,因此 True + 1有效且等于 2,依此类推。...x 对象引用时,或者由于某些其它原因需要规范化时,很有用。

1K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何避免自己写代码成为别人眼中一坨屎!

如何写出优雅整洁易懂代码一门学问,也是软件工程实践里重要一环。...,也有部分笔者工程实践总结。...,git可以干的事情不要交给代码; 源代码html注释一种厌物, 增加阅读难度; 注释一定要描述离它最近代码; 注释一定要与代码对应; 公共api需要添加注释,其它代码谨慎使用注释; 典型烂注释...; 某个公共函数调用私有函数紧随其后; 最理想参数零参数,最长不要超过三个入参,尽量不要输出参数: 如果函数传入三个及以上参数最好将其抽象为类; 标识参数十分丑陋,向函数传入布尔值用于区分不同业务做法很丑陋...API,保持对他们熟悉程度; 简单设计: 运行所有测试; 不可重复; 表达了程序意图; 尽可能减少类和方法数量; 以上规则按重要程度排列; 无论设计系统或者单独模块,别忘了使用大概可工作最简单方案

70910

如何避免自己写代码成为别人眼中一坨屎!

普通工程师堆砌代码,优秀工程师优雅代码,卓越工程师简化代码如何写出优雅整洁易懂代码一门学问,也是软件工程实践里重要一环。...,也有部分笔者工程实践总结。...,git可以干的事情不要交给代码; 源代码html注释一种厌物, 增加阅读难度; 注释一定要描述离它最近代码; 注释一定要与代码对应; 公共api需要添加注释,其它代码谨慎使用注释; 典型烂注释...; 某个公共函数调用私有函数紧随其后; 最理想参数零参数,最长不要超过三个入参,尽量不要输出参数: 如果函数传入三个及以上参数最好将其抽象为类; 标识参数十分丑陋,向函数传入布尔值用于区分不同业务做法很丑陋...API,保持对他们熟悉程度; 简单设计: 运行所有测试; 不可重复; 表达了程序意图; 尽可能减少类和方法数量; 以上规则按重要程度排列; 无论设计系统或者单独模块,别忘了使用大概可工作最简单方案

62670

int 和 integer :装箱和拆箱过程,会用到什么方法,你觉得这个会对性能有影响吗,原因是什么(百度一面)

这个问题,其实前面已经有了答案,因为Java一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。比如,在集合类,我们无法将int 、double等类型放进去。...因为这里装箱和拆箱自动进行非人为转换,所以就称作为自动装箱和拆箱。 在Java SE5,为了减少开发人员工作,Java提供了自动拆箱与自动装箱功能。...场景三、包装类型运算 有没有人想过,当我们对Integer对象进行四则运算时候,如何进行呢?...在程序,第一次使用Integer时候也需要一定额外时间来初始化这个缓存。...在Boxing Conversion部分Java语言规范(JLS)规定如下: 如果一个变量p: -128至127之间整数(§3.10.1) true 和 false布尔值 (§3.10.3)

2.5K20

大话 JavaScript(Speaking JavaScript):第六章到第十章

许多开发人员已经(大部分)知道如何为操作系统编写应用程序。 管理应用程序很简单。这有助于公共场所安装,如网吧和学校。...提示 这就是您需要了解关于分号部分内容。如果您始终添加分号,您可能可以不阅读本节其余部分。 空语句 分号本身一个“空语句”,什么也不做。空语句可以出现在需要语句任何地方。...这可以确保您代码可以被尽可能多的人理解,很重要,考虑到如今代码可以在国际间传播。.... ``` * * * ⁶ 为了简化问题,假装声明语句。 ## 第八章:值 > 原文:[8....例如(Java): Object foo = "abc"; foo静态类型Object;它动态类型String。 JavaScript 动态类型;变量类型通常在编译时不知道

25210

如何避免自己写代码成为别人眼中一坨屎

一、注释 不要给不好名字加注释,一个好名字比好注释更重要; 不要“拐杖注释”,好代码 > 坏代码 + 好注释; 在文件/类级别使用全局注释来解释所有部分如何工作; 一定要给常量加注释; 团队统一定义标记...,git可以干的事情不要交给代码; 源代码html注释一种厌物, 增加阅读难度; 注释一定要描述离它最近代码; 注释一定要与代码对应; 公共api需要添加注释,其它代码谨慎使用注释; 典型烂注释...; 某个公共函数调用私有函数紧随其后; 最理想参数零参数,最长不要超过三个入参,尽量不要输出参数: 如果函数传入三个及以上参数最好将其抽象为类; 标识参数十分丑陋,向函数传入布尔值用于区分不同业务做法很丑陋...,不要使用继承欺骗编程语言作用范围规则; 模块不应了解它所操作对象内部情况; DTO(Data Transfer Objects)一个只有公共变量没有函数类; 对象暴露行为,隐藏数据; 不要使用...; 简单设计: 运行所有测试; 不可重复; 表达了程序意图; 尽可能减少类和方法数量; 以上规则按重要程度排列; 无论设计系统或者单独模块,别忘了使用大概可工作最简单方案; 整洁代码只提供一种而非多种做一件事途径

7212118

Java小白成长记 · 第 1 篇《万物皆对象

封装:将抽象出数据、代码封装在一起,隐藏对象属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性 继承:在已有类基础上,进行扩展形成新类,提高代码复用性。...事实上,这是 Java 程序设计一项基本行为。 ① 数据存储 ? 本部分内容会在 JVM 系列详细讲解 那么,程序在运行时如何存储呢?尤其内存怎么分配。...本节向你介绍 Java 如何通过释放存储来简化这个问题。 ① 作用域 作用域决定了在其内定义变量名可见性和生命周期。在 Java、C++、C ,作用域由花括号 { }位置决定。...签名作为方法唯一标识。 Java 方法只能作为类部分创建。它只能被对象所调用,并且该对象必须有权限来执行调用。若对象调用错误方法,则程序将在编译时报错。...int swap(int &a, int &b){ int temp = a; a = b; b = temp; } 这种在 C++ 常见写法在 Java 错误

40920

OOP三大特性之封装

如何理解封装 OO解决更大规模应用开发一种尝试,它提升了程序员管理程序尺度。...这种做法错误,它把数据当成设计核心,这一堆getter、setter,就等于暴露实现细节。...减少接口暴露 之所以需要封装,就是要构建一个内聚单元。...其实可仅暴露一个方法: 外部调用代码也会简化: 尽可能减少接口暴露,该原则适于类设计、系统设计。 很多人都特别随意在系统里添加接口,让一个看似不复杂系统,随便就有成百上千个接口。...注意区分: OO和 Java 语言 传输数据和业务对象 Java语言特点就是一切皆对象Java对象概念跟OO对象概念不同: 前者语言特性 后者一种编程范式 在具体编码,哪些属于对象,哪些不属于对象

47420

Groovy

默认导入包:Groovy 默认导入了许多常用 Java 包,减少了开发者在编写代码需要导入数量,进一步简化代码编写过程。...公共作用域:在 Groovy ,所有的类成员默认公开(public),简化了访问控制声明,同时也鼓励开发者采用更加开放设计模式。...3、创建项目 4、基本语法 在Groovy,类型转换一个非常自然和灵活过程,它允许不同类型数据在需要时自动转换。这种特性极大地简化代码编写和维护,因为它减少了显式类型转换需求。...意味着你可以在需要对象地方使用基本类型,而在需要基本类型地方使用包装类对象。 这种自动类型转换特性使得Groovy在处理不同类型数据时更加灵活和方便。...而在Groovy,如果没有明确指定可见性修饰符,类或方法默认公共(public)。减少了模板化代码,使得代码更加简洁。

15610

Java 基础篇】Java 自动装箱与拆箱:优雅处理基本数据类型与包装类转换

Java 编程,自动装箱(Autoboxing)和自动拆箱(Unboxing)两个重要概念。它们使得基本数据类型与其对应包装类之间转换更加方便,同时也提高了代码可读性和可维护性。...本篇博客将深入探讨自动装箱和拆箱概念、用法以及为什么它们对 Java 程序员如此重要。 什么自动装箱和拆箱?...这些包装类用于将基本数据类型封装为对象,以便进行更多操作。 自动装箱和拆箱就是 Java 编译器自动处理基本数据类型与包装类之间转换,使程序员无需手动编写繁琐代码。...示例 下面一些自动装箱和拆箱示例,展示了如何在基本数据类型和包装类之间转换,这些示例演示了如何使用自动装箱和拆箱来进行基本数据类型与包装类之间转换,使代码更加简洁和易读。...但在性能敏感场景,仍需慎重选择是否使用自动装箱和拆箱,以确保程序高效运行。 希望通过本篇博客,你对 Java 自动装箱和拆箱有了更深入理解,并能够在实际编程灵活运用这一特性。

43120

帮助 Java 开发人员进行 Bean 映射 8 大框架

图片 作为一名新手 Java 程序员,您可能想知道如何构建一个大型应用程序,而无需使用大量可能使您筋疲力尽类似代码。...在Java上构建 包含多个层大型应用程序需要域、持久性和数据传输对象 (DTO) 等模型。应用程序通常由不同但相似的对象模型组成,其中数据可能相似但结构和目标不同。...但在继续讨论映射 框架之前,让我们先了解一下 Java 映射基础知识。 什么 JavaBean? JavaBean 将不同对象封装到一个对象或 bean Java 类。...对于以下有关推荐框架部分将提供框架概述说明,然后编写代码段供您在准备好时开始使用。...只有在该数据映射到其他对象之后。 重映射 ReMap 一个 Java 映射库,可帮助开发人员逐个属性地简化对象转换,同时减少映射器类单元测试。

2.2K10

程序员学习编程设计模式网站推荐

该书提供了 23 个模式来解决面向对象程序设计各种问题, 很快便成为了畅销书。...由于书名太长, 人们将其简称为 “四人组 (Gang of Four, GoF) 书”, 并且很快进一步简化为 “GoF 书”。 此后, 人们又发现了几十种面向对象模式。...本书覆盖了三种主要模式类别: 创建型模式提供创建对象机制, 增加已有代码灵活性和可复用性。 结构型模式介绍如何对象和类组装成较大结构, 并同时保持结构灵活和高效。...我们也对设计模式发展史、分类等有了一定了解,接着就是通过代码实践了。在学习设计模式时,大家会经常遇到一个问题。 同一种设计模式在A编程语言中能够实现,但是在B编程语言中就不知道如何实现。...网站中有这不同编程语言示例代码,满足了绝大部分学习者。 学习方法 在示例代码,不仅仅介绍了设计模式定义,还有逻辑图,UML图,实际代码,实用环境。

78950

代码优化技巧·代码编写好习惯·代码规范

代码优化好习惯 减少对变量重复计算 明确一个概念,对方法调用,即使方法只有一句语句,也是有消耗,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。...推荐以后写并发时候在复习一遍 代码规范 注释 不要给不好名字加注释,一个好名字比好注释更重要 不要“拐杖注释”,好代码 > 坏代码 + 好注释 在文件/类级别使用全局注释来解释所有部分如何工作...,而非明显细节 不要在代码中加入代码著作信息,git可以干的事情不要交给代码代码html注释一种厌物, 增加阅读难度 注释一定要描述离它最近代码 注释一定要与代码对应 公共api需要添加注释...某个公共函数调用私有函数紧随其后 最理想参数零参数,最长不要超过三个入参,尽量不要输出参数 如果函数传入三个及以上参数最好将其抽象为类 标识参数十分丑陋,向函数传入布尔值用于区分不同业务做法很丑陋...模块不应了解它所操作对象内部情况 DTO(Data Transfer Objects)一个只有公共变量没有函数对象暴露行为,隐藏数据 不要使用“尤达表示法” 如 if(null == obj

1.1K10

JAVA】不会有人不知道 Java 类能够在运行时动态生成吧?

从上面过程得到启发,其中一个直接方式从源码入手,可以利用 Java 程序生成一段源码,然后保存到文件等,下面就只需要解决编译问题了。...正文 首先来理解一下,类从字节码到 Class 对象转换,在类加载过程,这一步通过下面的方法提供功能,或者 defineClass 其他本地对等实现。...,比如,ProxyGenerator 有 bug } 前面理顺了二进制字节码信息到 Class 对象转换过程,似乎我们还没有分析如何生成自己需要字节码,接下来一起来看看相关字节码操纵逻辑。...生成内部逻辑,这些代码实现就不在这里展开了,如果你确实有兴趣或有需要,可以参考类似 LamdaForm 字节码生成逻辑:java.lang.invoke.InvokerBytecodeGenerator...各种 Mock 框架 ORM 框架 IOC 容器 部分 Profiler 工具,或者运行时诊断工具等 生成形式化代码工具 甚至可以认为,字节码操纵技术工具和基础框架必不可少部分,大大减少了开发者负担

31720

浅谈JVM运行期几种优化手段

一、摘要 在之前文章我们谈到过,相比 C/C++ 语言,Java 语言在运行效率方面要稍逊一些,因为 Java 应用程序在虚拟机上运行,而 C/C++ 程序直接编译成平台相应机器码来运行程序。...上面提到都是概念知识,虚拟机如何判断一段代码是否“热点代码”呢?...// 将 c*bb*c 用 E 表示,消除公共子表达式 int d = E * 12 + a + (a + E); 即时编译器还可能进行另一种叫做代数简化优化,把表达式变为: // 代数简化...虚拟机如果探测到某个方法热点方法并且长度不太长时,会进行内联,所谓内联就是把方法内代码拷贝、粘贴到调用者位置。 举个例子!...虽然在实际测试结果,实施逃逸分析后程序往往能运行出不错成绩,但是在实际应用程序,尤其大型程序反而发现实施逃逸分析可能出现效果不稳定情况,或因分析过程耗时但却无法有效判别出非逃逸对象而导致性能有所下降

12710

不会吧不会吧,你不会还不知道这些提高JS代码质量骚操作吧?

1 评价代码质量指标 1.1 健壮性 程序健壮性程序在执行时,在局部发生错误情况下,不影响整个系统运行,而且我们能够很快定位到发生错误位置。...导致我们找bug很慢,所以,函数a()不健壮。...,那么我们如何对象类型参数进行校验呢?...,我们该如何做呢,答案使用 Object.defineProperty() 方法,它可以直接在一个对象上定义一个新属性,或者修改一个对象现有属性, 并返回这个对象。...2.1 用享元模式减少重复代码 当遇到类似的代码时,我们可以使用享元模式,提取它们不同部分减少代码量。 享元模式基本结构: ?

1.1K52

11 种在大多数教程找不到JavaScript技巧

在这篇文章将分享11条认为特别有用技巧。这篇文章为初学者准备,但我希望即使中级JavaScript开发人员也能在这个列表中找到一些新东西。...1..过滤唯一值 Set对象类型在ES6引入,配合展开操作...一起,我们可以使用它来创建一个新数组,该数组只有唯一值。...或运行可以帮助我们简化操作: return (foo || []).length 如果变量footrue,它将被返回。否则,将返回空数组长度:0。 例二 你是否遇到过访问嵌套对象属性问题?...你可能不知道对象或其中一个子属性是否存在,这可能会导致令人沮丧错误。 假设我们想在this.state访问一个名为data属性,但是在我们程序成功返回一个获取请求之前,data 未定义。...删除最后一个数字 按位或运算符还可以用于从整数末尾删除任意数量数字。意味着我们不需要使用这样代码来在类型之间进行转换。

1.9K30

11 种在大多数教程找不到JavaScript技巧

在这篇文章将分享11条认为特别有用技巧。这篇文章为初学者准备,但我希望即使中级JavaScript开发人员也能在这个列表中找到一些新东西。...1.过滤唯一值 Set对象类型在ES6引入,配合展开操作...一起,我们可以使用它来创建一个新数组,该数组只有唯一值。...或运行可以帮助我们简化操作: return (foo || []).length 如果变量footrue,它将被返回。否则,将返回空数组长度:0。 例二 你是否遇到过访问嵌套对象属性问题?...你可能不知道对象或其中一个子属性是否存在,这可能会导致令人沮丧错误。 假设我们想在this.state访问一个名为data属性,但是在我们程序成功返回一个获取请求之前,data 未定义。...删除最后一个数字 按位或运算符还可以用于从整数末尾删除任意数量数字。意味着我们不需要使用这样代码来在类型之间进行转换。

1.9K30
领券