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

Java 开发技巧:减少魔法使用

上面的代码我们往往需要通过上下文推断出来,如果是非常复杂业务或者十年前代码那就更惨了,搞不好文档也没有。所以我们要尽量避免出现魔法。今天就来讲几种避免魔法操作。 2....避免魔法一些操作。 一般魔法都是不经常变动。对于魔法处理要结合业务和作用域。 2.1 静态常量 如果该作用域在一个类中或者同一个包下,一般可以使用静态常量来解决。...2.2 使用接口 既然我们使用了静态常量那么我们可以将魔法封装入接口也是可以。...我们给自己再增加点需求,以达到你枚举更加友好可读性。...小贴士:枚举尽量不要使用中文声明,如 FEMALE 直接声明为 女性。另外枚举是单例,因此无法 clone 和反序列化。 3. 总结 今天我们了解了如何优雅处理编码中魔法,特别是枚举方案。

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

>> Java 开发技巧:减少魔法使用

前言 代码中有魔法会造成代码可读性低(与代码量成正比)。还会造成维护困难,改动一个数值便要大动干戈,牵一发而动全身。应当尽力消灭或减少魔法,提高维护效率和代码可读性。...1.2 魔法处理方式 上面的代码我们往往需要通过上下文推断出来,如果是非常复杂业务或者十年前代码那就更惨了,搞不好文档也没有。所以我们要尽量避免出现魔法。今天就来讲几种避免魔法操作。...1.2.1 静态常量 如果该作用域在一个类中或者同一个包下,一般可以使用静态常量来解决。...1.2.2 使用接口 既然我们使用了静态常量那么我们可以将魔法封装入接口也是可以。...自己再增加点需求,以达到你枚举更加友好可读性。

26240

开发经验|如何优雅减少魔法使用

简介: 代码中有魔法会造成代码可读性低(与代码量成正比)。还会造成维护困难,改动一个数值便要大动干戈,牵一发而动全身。应当尽力消灭或减少魔法,提高维护效率和代码可读性。...前言 代码中有魔法会造成代码可读性低(与代码量成正比)。还会造成维护困难,改动一个数值便要大动干戈,牵一发而动全身。应当尽力消灭或减少魔法,提高维护效率和代码可读性。...2.1 静态常量 如果该作用域在一个类中或者同一个包下,一般可以使用静态常量来解决。...2.2 使用接口 既然我们使用了静态常量那么我们可以将魔法封装入接口也是可以。...自己再增加点需求,以达到你枚举更加友好可读性。

22520

使用信号监控 Django 模型对象字段变化

Django 信号 (Signals) 功能类似于 WordPress 动作 (action),用于为项目全局增加事件广播 (dispatch) 与接收 (receive) 机制。...其中,灵活使用其内置模型信号 (Model Signals) 接收功能就可以监控大部分模型对象 (Model instances) 变化。...监控特定字段 (field) 变化 从上一段代码可以知道,通过接收模型 post_save 信号,可以得知发生了保存模型对象操作,并且还可以区分出是创建了模型对象还是更新了模型对象。...然而,模型信号并没有提供针对特定字段变化广播功能,虽然该信号提供了 update_fields 参数,但是并不能证明在该参数中字段字段一定发生了变化,所以我们要采用一个结合 post_init...)时候,比较该模型对象的当前字段与缓存字段,如果不相同则认为该字段发生了变化。

1.8K20

使用 Set 检测 JavaScript 对象变化

JavaScript集合是一组有序唯一,对于消除重复非常有帮助。在处理离散数据时,集合是必不可少。...当使用该数组初始化一个新集合时,它返回了包含7个不同集合。就是这样工作。您可以在MDN上阅读更多有关集合信息。...let user = { name: "Ygritte Snow", married: true, home: "Winterfell" };但是我们JavaScript如何检测到对象文字已更改呢...这是我们将要做:将Ygritte结婚前和结婚后对象转换为可迭代内容,即2个数组,使用Object.values()方法。使用展开运算符合并这两个数组。...然后我们使用Setsize属性比较了结婚前集合(结婚前对象)和合并集合(结婚前和结婚后对象)。通常我们将对象文字转换为数组,然后将数组转换为集合。

13400

使用 Set 检测 JavaScript 对象变化

这种 JavaScript 方法旨在通过将对象文字转换为数组,然后转换为集合,以便比较之前和之后状态之间唯一,从而检测对象文字更改。...总结一下这个过程:从对象创建数组: 使用 Object.values() 方法将对象文字 before 和 after 提取为数组。...合并数组: 将 beforeArr 和 afterArr 使用扩展运算符(...)合并为单个数组。...创建集合: 从合并后数组(mergedSet)和 before 对象数组(beforeSet)创建集合。...为了解决这个问题,您可以在执行比较之前删除这些属性(就像您提供代码中警告部分所示),或者您可以在比较过程中明确考虑这些属性,以避免在仅动态属性已修改时误报更改。

11010

禅道 给禅道缺陷增加自定义字段供不同缺陷操作页面使用

给禅道缺陷增加自定义字段供不同缺陷操作页面使用 by:授客 QQ:1033553122 实践环境 禅道项目管理软件9.2.1 、8.0开源Linux版 需求描述 在禅道创建、修改、查看、关闭缺陷页面添加一个自定义字段...注意:笔者使用禅道,语言设置是中文,所以仅修改zh-cn.php,不修改英文en.php和tw.php 修改zentaopms/module/bug/view/create.html.php 如下图...如下,找到$config->bug->list->exportFields变量,增加新增自定义字段名称,解决缺陷导出报表中没有新增字段问题,如下 ?...如下,找到global $lang,在其下方合适位置新增搜索字段,即我们自定义字段,并给字段设置可选搜索项,解决缺陷搜索中没有新增字段问题。 ? ? 修改效果 ?...解决导出报表,新增字段不为设置枚举选项,而是为索引问题。

2.5K30

使用tp框架和SQL语句查询数据表中字段包含某

有时我们需要查询某个字段是否包含某时,通常用like进行模糊查询,但对于一些要求比较准确查询时(例如:微信公众号关键字回复匹配查询)就需要用到MySQL find_in_set()函数; 以下是用...find_in_set()函数写sq查询l语句示例: $keyword = '你好'; $sql = "select * from table_name where find_in_set('"....$keyword"',msg_keyword) and msg_active = 1"; 以下是在tp框架中使用find_in_set()函数查询示例: $keyword = '你好'; $where...数据库中存关键字要以英文“,”分隔; 2.存储数据要对分隔符进行处理,保证以英文“,”分隔关键字。...以上这篇使用tp框架和SQL语句查询数据表中字段包含某就是小编分享给大家全部内容了,希望能给大家一个参考。

7.3K31

python之input()函数使用——在终端输入想要,小白也能学会python之路

来,左边跟我一起学java,右边一起从小白学python,一起学习,一起成长 一、input初级使用 今天学习了input()函数用法,是一个在终端输入字符串函数,即代码运行后,由用户在电脑上输入指定操作...例如 我在电脑上提示:刘德华和吴彦祖你喜欢哪一个呢 输入:吴彦祖 输出:吴彦祖,我喜欢你 首先我们对input()函数结果进行赋值,然后使用input()函数搜集信息,最后再用print()函数输出结果...二、input进阶使用:和if else搭配 下面来一个进阶,将input和if else联合使用 代码1: print('你选择你最喜欢明星:1:刘德虎 2:吴彦祖') choice = input...同样在终端输入都是1,但是由于代码不同,一个是字符串1,一个是整数1,所以导致运行结果不一样, 原因是:input()函数输入,永远会被【强制性】地转换为【字符串】类型。...虽然在终端得到输入是字符串,但是我们可以在input()函数外加一个int()强转成整数类型,就可以变成想要其他类型啦 temp = int(input('请输入1或2:')) print(type

2.9K20

浏览器之性能指标-INP

❞ 4.1 甄别和减少输入延迟 当用户与页面进行交互时,交互第一个部分是输入延迟。根据页面上其他活动,输入延迟可能会相当长。...无论交互输入延迟源头是什么,我们都希望将输入延迟减少到最小,以便交互能够尽快开始运行事件回调。...减少输入延迟 避免启动过多重复定时器 ❝在JavaScript中有两个常用定时器函数,它们可能会导致输入延迟:setTimeout和setInterval。...使用AbortController来取消发出fetch请求,以便主线程不会因处理fetch回调而变得拥堵。 动画也是导致交互重叠而增加输入延迟另一个来源。...布局抖动是性能瓶颈,因为在JavaScript中更新样式,然后立即请求这些样式,浏览器被迫执行同步布局工作,而它本来可以在事件回调完成后异步地等待稍后执行。

75320

HTML 表单和约束验证完整指南

在本文中,我们将研究 HTML 表单字段和 HTML5 提供验证选项。我们还将研究如何通过使用 CSS 和 JavaScript 来增强这些功能。 什么是约束验证? 每个表单域都有一个目的。...(但请避免使用它,因为它很少有用) search 搜索输入字段 submit 一个表单提交按钮 tel 电话号码输入字段 text 文本输入字段 time 没有时区时间选择器 url URL 输入字段...该字段可能会显示一个微调器,键盘上/下光标按下将增加减少。 大多数字段类型是显而易见,但也有例外。例如,信用卡是数字,但增量/减量微调器没用,输入 16 位数字时很容易向上或向下按。...使用正确字段type并autocorrect提供在 JavaScript 中难以实现好处。...如有必要,使用一点 JavaScript 来启用自定义验证和消息。 对于更复杂字段,逐步增强标准输入。 最后:忘记 Internet Explorer!

8.2K40

26个你需要学习Firefox配置技巧,改进体验和加快浏览器响应速度

减少会话历史缓存,保存RAM 如果你使用是一台老旧电脑,那么即使是通常速度很快Firefox也会在默认设置下减慢你电脑速度。...默认:2 -以Firefox处理新窗口方式打开所有JavaScript窗口,除非JavaScript调用指定如何显示窗口 可以更改: 0 -以Firefox处理新窗口方式打开所有链接...在提示时输入名称:config.trim_on_minimize 输入:True 16....增加/减少磁盘缓存数量 加载页面时,Firefox会将其缓存到硬盘中,这样下次加载时就不需要再次下载了。您为Firefox提供存储空间越大,它可以缓存页面就越多。...为了防止这个问题频繁发生,您可以通过编辑Browser.download.saveLinkAsFilenameTimeout来增加超时值以减少超时可能性 默认:4000(4秒) 修改:大于1000

3.7K20

Excel转表工具(xresloader)新验证器(验证外部Excel和文本数据,唯一性和自定义规则)

同时支持protobuf proto v2 和 proto v3 支持导出proto枚举到lua/javascript代码和json/xml数据 支持导出proto描述信息到lua/javascript...支持自动合表,把多个Excel数据表合并成一个输出文件 支持公式 支持oneof,支持plain模式输入字符串转为数组或复杂结构,支持map 支持空数据压缩(裁剪)或保留定长数组 支持基于正则表达式分词字段名映射转换规则...首先是增加了 org.xresloader.field_unique_tag 插件,是一个字符串,表示唯一性检测标签,可以出现多次。 对于相同唯一性检测标签所有字段组合,只能出现一次。...有时候,我们也要方便Excel结构调整,那么这时候数据列可能是不确定,那么我们可以通过上面第二个验证器来告诉 xresloader 从那一行读取 KeyRow ,并且使用匹配所在列作为数据列。...当然这些工具和选项目前是实验性质,以后我们可能会在保证功能不减少情况下做一些调整。 杂项优化和修复 修复了一些错误 在Plain模式中 oneof 内使用enum类型时,无法导出输出问题。

28120

ASP.NET Core 6 性能改进

在新QueryStringEnumerable API情况下,如果您计划多次枚举查询字符串,它实际上可能比使用 QueryHelpers.ParseQuery 并存储已解析查询字符串字典更昂贵...以前,发送到和从JavaScript字节数组是Base64编码,因此它们可以被序列化为JSON,这增加了传输大小和CPU负载。...view=aspnetcore-6.0#stream-from-javascript-to-net 输入文件 使用上面提到Blazor Streaming Interop,我们现在支持通过InputFile...例如,服务器可能会将标头直接存储在一个字段中,并直接返回该字段,而不是在内部字典中查询标头,这需要对键进行哈希并查找条目。在某些情况下,当获取或设置标头时,此更改可带来高达480%改进。...@benaadams dotnet/aspnetcore#32234 删除了 HttpRequestHeaders 枚举中未使用字段,该字段通过不再为每个枚举标头分配字段来提高性能。

1.7K20

面试题(四)

另外尽量减少数据库访问,可以使用缓存数据库如memcache、redis。 镜像: 尽量减少下载,可以把不同请求分发到多个镜像端。...返回类型声明:增加了对返回类型声明支持。类似于参数类型声明,返回类型声明指明了函数返回类型。可用类型与参数声明中可用类型相同。...选取最适用字段属性,应该尽量把字段设置为NOT NULL 使用连接(JOIN)来代替子查询(Sub-Queries) 使用联合(UNION)来代替手动创建临时表 尽量少使用 LIKE 关键字和通配符...> 常见 PHP 安全性攻击 SQL注入:用户利用在表单字段输入SQL语句方式来影响正常SQL执行。...XSS攻击 :跨站点脚本攻击,由用户输入一些数据到你网站,其中包括客户端脚本(通常JavaScript)。如果你没有过滤就输出数据到另一个web页面,这个脚本将被执行。

2.3K20

面试题(三)

另外尽量减少数据库访问,可以使用缓存数据库如memcache、redis。 镜像: 尽量减少下载,可以把不同请求分发到多个镜像端。...返回类型声明:增加了对返回类型声明支持。类似于参数类型声明,返回类型声明指明了函数返回类型。可用类型与参数声明中可用类型相同。...选取最适用字段属性,应该尽量把字段设置为NOT NULL 使用连接(JOIN)来代替子查询(Sub-Queries) 使用联合(UNION)来代替手动创建临时表 尽量少使用 LIKE 关键字和通配符...> PHP 复制 常见 PHP 安全性攻击 SQL注入:用户利用在表单字段输入SQL语句方式来影响正常SQL执行。...XSS攻击 :跨站点脚本攻击,由用户输入一些数据到你网站,其中包括客户端脚本(通常JavaScript)。如果你没有过滤就输出数据到另一个web页面,这个脚本将被执行。

2.4K10

kettle工具介绍和使用

使用kettle需要了解知识?...字段选择 选择需要字段,过滤掉不要字段,也可做数据库字段对应 过滤记录 根据条件对记录进行分类 排序记录 将数据根据某以条件,进行排序 空操作 无操作 增加常量 增加需要常量字段 Scripting...File exists 检查文件是否存在,返回布尔 Javascript 执行JavaScript脚本 Create file 创建文件 Delete file 删除文件 Wait for...分别建立【对公类型修改】和【对私类型修改】与【增加对公常量】和【增 加对私常量】连接,如图: 双击【增加对公常量】,名称写入value,类型选择string,写入“这是一 笔对公客户发生交易...同理,双击【增加对私常量】,名称写入value,类型选择string,写入“这 是一笔对私客户发生交易”,确定保存。

5K20

【译】ASP.NET Core 6 中性能改进

我们将专注于改进 6.0 中空闲连接,我们在其中进行了许多更改以减少连接等待数据时使用内存量。...以前,向 JavaScript 发送和从 JavaScript 发送字节数组是 Base64 编码,因此它们可以序列化为 JSON,这增加了传输大小和 CPU 负载。...输入文件 使用上面提到 Blazor Streaming Interop,我们现在支持通过 InputFile 组件上传大文件(以前上传限制为 ~2GB)。...例如,不是在内部字典中查询需要散列键并查找条目的标头,而是服务器可能将标头直接存储在字段中并可以直接返回该字段。在某些情况下,在获取或设置标头时,此更改可带来高达 480% 改进。...@benaadams dotnet/aspnetcore#32234 删除了 HttpRequestHeaders 枚举中未使用字段,该字段通过不再为每个枚举标头分配字段来提高性能。

96020
领券