代码重构方法和经验分享(重构代码的10个最佳实践)

开源项目

1.dot

Python Star:2.6k

dot(Deepfake Offensive Toolkit)是一款将deepfakes实时的、可控制的应用于在线视频的工具。

那么,deepfakes是什么?

简单的翻译过来就是深度伪造,换句话说,它是通过人工智能技术,能够将目标对象的面部特征嫁接到被模仿的对象上,给目标对象进行换脸。

2.codecat

Python Star:241

PDF处理还收费?不可能

CodeCat是一款可以帮助你使用静态代码分析功能找到/追踪用户输入和安全漏洞的开源工具,这对于代码开发中的安全控制非常有价值。

目前它适用于C、C++、GO、Python、javascript、Swift、PHP、Ruby、ASP、Kotlin、Dart和Java。

总结一下,它具有如下特性:

  • 按照Regex的自定义规则进行递归代码搜索
  • 代码视图中的语法高亮
  • 管理规则的系统
  • 控制用户的资源
  • 按照IP地址的允许列表控制HTTP访问的资源
  • 遵循OWASP安全实践的应用

3.OCRmyPDF

Python Star:6.8k

PDF有很多不同类型,直接通过word等格式转换的可以直接复制粘贴,操作比较简单。但是,扫描版的PDF则比较麻烦。

OCRmyPDF为扫描的PDF文件添加OCR文本层,使其能够被搜索或复制粘贴。

它具有如下特性:

  • 基于普通的PDF生成一个可搜索的PDF/A文件
  • 将OCR文本准确地放在图像下面,以方便复制/粘贴
  • 保持原始嵌入图像的准确分辨率
  • 优化PDF图像,生成的文件通常比输入文件小
  • 使用Tesseract OCR引擎,支持识别100多种语言
  • 能处理数千页的文件

4.data-diff

Python Star:1.3k

data-diff是一个命令行工具和Python库,能够用于对比两个不同数据库的差异。

目前,它已经在多种不同类型的数据库上进行过验证,而且对于对比结果可以通过CLI/API的形式来创建监控和告警,能够兼容不同的字段类型。速度也非常快,10s内能够验证25M+行数据。

data-diff将表分割成更小的片段,然后在两个数据库中对每个片段进行校验。当一个段的校验和不相等时,它将进一步把这个段分成更小的段,对这些段进行校验,直到它得到不同的行。

5.cfg4j

Java Star:541

现代配置库,用于用Java编写的分布式应用。

cfg4j,也就是configuration for Java,一种开源的配置库,可以用于Java开发的分布式应用。

它具有如下特性:

  • 自动重新加载配置
  • 强大的配置机制(接口绑定,多源支持与回退策略,合并等等)。
  • 分布式环境友好(缓存,支持多种环境[测试,预开发,生产],……)
  • 读取配置:Consul、Git repos(YAML和/或属性)、文件、Classpath, …
  • 与DI容器无缝集成:Spring、Guice等
  • 与Metrics库的集成来展示性能指标
  • 经过大量的测试(99%的代码覆盖率)
  • 完善的文档

6.Decompiler

Kotlin Star:58

PDF处理还收费?不可能

一款开源免费的Java反编译GUI工具。

顾名思义,通过这款工具,我们可以对已经编译的Java jar包,可以反编译复杂的Java applets和二进制文件,产生准确的源代码。

7.scrutiny

Go Star:1.5k

PDF处理还收费?不可能

用于智能S.M.A.R.T监控的 WebUI。

如果你运行的服务器有几个硬盘,你可能已经熟悉S.M.A.R.T和smartd守护程序。

smartd是一个监控许多ATA、IDE和SCSI-3硬盘中内置的自我监测、分析和报告技术(SMART)系统的守护进程。

SMART的目的是监测硬盘的可靠性和预测硬盘故障,并进行不同类型的硬盘自我测试。

Scrutiny是一个简单而集中的应用,有几个核心功能:

  • Web UI仪表板
  • smartd集成
  • 自动侦测所有连接的硬盘 历史趋势的S.M.A.R.T指标跟踪
  • 利用现实故障率定制阈值
  • 温度跟踪

8.sake

Go Star:435

sake是一个用于本地和远程主机的命令运行工具。

你在 sake.yaml 配置文件中定义服务器和任务,然后在服务器上就可以运行任务。

sake有大量的功能:

  • 任务、服务器和标签的自动完成
  • 通过SSH进入服务器或docker容器
  • 通过 sake list servers|tasks 列出服务器/任务
  • 以表格格式展示任务输出 sake run <task> 结果

9.codewarrior

C Star:170

一款开源的代码搜索工具和静态代码分析工具,它具有如下功能:

  • 通过重合码模式搜索代码
  • 自定义规则
  • 带有网络套接字资源的HTTPd视图
  • 递归扫描
  • 通过编程语言突出显示语法
  • 通过允许列表控制IP地址访问的资源

10.wayfire

C++ Star:1.5k

Wayfire是一个3D Wayland合成器,灵感来自于Compiz并基于wlroots。

它旨在创建一个可定制的、可扩展的和轻量级的环境,而不用以牺牲外观作为代价。

资源工具

1.Pomsky

Pomsky是一种可以编译成正则表达式的语言,它目前处于alpha阶段。

Pomsky可以通过CLI或Rust宏来使用。

一些例子:

# String
'hello world'                 # hello world

# Greedy repetition
'hello'{1,5}                  # (?:hello){1,5}
'hello'*                      # (?:hello)*
'hello'+                      # (?:hello)+

# Lazy repetition
'hello'{1,5} lazy             # (?:hello){1,5}?
'hello'* lazy                 # (?:hello)*?
'hello'+ lazy                 # (?:hello)+?

# Alternation
'hello' | 'world'             # hello|world

2.GameShell

一个学习如何使用Unix shell命令的游戏.

学习Unix shell是有一定成本的,GameShell被设计成一种工具,帮助学生接触到shell,通过游戏的方式在鼓励学习的同时也能获得乐趣。

PDF处理还收费?不可能

3.Commands.dev

每个工程师都有过忘记终端命令的时候,因为它很少被使用,或者有难以理解的复杂参数。

当这种情况发生时,不得不在他们的终端命令历史中进行搜索,或者打开浏览器进行搜索。

Commands.dev就是要解决这个问题。

Commands.dev是一个开源的、可搜索的、从整个互联网上收集的流行终端命令的集合。你可以按类别(git、android、docker)查找命令,每个命令都会告诉你需要插入哪些参数。

PDF处理还收费?不可能

4.PyScript

PDF处理还收费?不可能

PyScript是一种可以在浏览器中运行的Python。

它是一个框架,允许用户使用HTML的界面和Pyodide、WASM等,在浏览器中创建丰富的Python应用程序。

PyScript框架为各种经验水平的用户提供了一种具有无数应用的、易于学习的编程语言。

5.Hedy

PDF处理还收费?不可能

学习编程可能很困难,不是说编程本身很难,而是有很多规则你需要记住,就像你开始学习英语时一样。

同样地,你也需要大量的练习来学习编程。

Hedy则是一款渐进式的编程语言。这意味着,你不必一次就学会所有的规则,最初的几个级别没有那么多规则,所以你可以轻松地适应编程。

在每个级别中,都会增加新的规则,增加命令的数量,循序渐进的进行学习。

技术文章

1.用Java和Python进行数据统计和分析

提起数据统计与分析,很多同学第一印象想到的就是Python或者R。

其实,Java也是一款在数据领域应用非常广泛的编程语言,例如,Flink、hive等都对Java有很好的支持。

在这篇文章中,重点研究如何使用Java和Python对大量的表格数据进行简单的数据分析并计算一些统计数据。

在这里,可以看到如何在每个平台上进行数据分析的不同技术,比较它们如何扩展,以及应用并行计算来提高其性能的可能性。

2.重构代码的10个最佳实践

编写代码并不仅仅为了它能够正常执行并输出结果,还要考虑它的设计模式、扩展线、可读性等。

重构是在不改变其功能的情况下改进现有代码的设计的过程。

作为软件开发者,我们不断面临着改进和优化代码的需要。

无论是为了性能、可读性还是可维护性,重构代码都是一项基本技能。

在重构代码时,有许多不同的技术可以使用。

在这篇文章中,就给大家介绍了重构代码的10个最佳实践。

本文链接:https://www.dzdvip.com/35813.html 版权声明:本文内容均来源于互联网。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 395045033@qq.com,一经查实,本站将立刻删除。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年7月24日 19:36
下一篇 2022年7月24日 21:06

相关推荐

  • 普京等多国领导人哀悼江泽民逝世 联合国及各国政要对江泽民逝世表示慰问

    多国领导人和国际组织负责人向国家主席习近平致唁电函并通过其他方式,对江泽民同志逝世表示深切哀悼。 俄罗斯总统普京表示,江泽民同志对当代中国经济社会发展和国际地位提升作出了重要贡献。江泽民同志是俄罗斯的老朋友,为推动俄中关系提升至战略协作伙伴关系作出了重要贡献。我将永远铭记这样一位具有崇高威望和巨大个人魅力的政治家,请转达对江泽民同志亲属及全体友好中国人民的诚挚慰问。 老挝人民革命党中央总书记、国家主席通伦表示,江泽民同志为中国特色社会主义事业作出了重要贡献。江泽民同志是老挝党和人民的亲密朋友,为老中关系发展发挥了重要引领作用。我们对江泽民同志逝世表示沉痛哀悼。 古巴共产党中央第一书记、国家主席迪亚斯-卡内尔表示,江泽民同志是卓越政治家和共产主义领导人,是古巴革命亲密的朋友。古巴向中国党、政府和人民致以最深切的哀悼。 文莱苏丹哈桑纳尔表示,江泽民主席为提升中国人民生活水平、领导国家成为稳定繁荣经济体作出了重要贡献,文方高度赞赏他对深化文中长久关系作出的贡献。 新加坡总统哈莉玛表示,江泽民主席领导中国持续推进经济改革,实现快速发展。在这悲痛时刻,我们的哀思与中国人民同在。 马尔代夫总统萨利赫表示,江泽民主席促进了中国经济社会快速发展,巩固了中国在国际舞台上重要贡献者的角色,将作为富有远见的领导人被铭记。 哈萨克斯坦总统托卡耶夫表示,江泽民主席致力于中国国家发展繁荣和国际影响力提升,为巩固哈中友谊作出重大贡献,将被两国人民永远铭记。 塔吉克斯坦总统拉赫蒙表示,塔方高度评价江泽民先生为中国发展及塔中关系所作重大贡献,他的逝世是一个重大损失。 白俄罗斯总统卢卡申科表示,江泽民主席带领中国人民实现繁荣富强,是白中关系的奠基者,为发展巩固白中关系作出积极贡献。 巴勒斯坦总统阿巴斯表示,我本人和巴勒斯坦人民永远铭记这位杰出领导者,他是巴勒斯坦人民、事业、合法权利的支持者,巴中两国关系的促进者,巴中建立外交关系的见证者。我谨代表巴勒斯坦国家和人民并以我个人名义,向中国共产党、中国政府、友好的中国人民以及逝者家属致以最深切的哀悼。 联合国秘书长古特雷斯对江泽民逝世表示深切悲痛 联合国秘书长古特雷斯发表声明,对中国前国家主席江泽民逝世表示深切悲痛。古特雷斯赞扬江泽民坚定不移地倡导国际参与,中国取得的巨大经济进步以及中国成功加入世界贸易组织是江泽民任内的标志性成就。他永远不会忘记江泽民个人…

    2022年12月1日
    130
  • 系统文件丢失开不了机怎么办?

    统文件指的是存放操作系统主要文件的文件夹,一般在安装操作系统过程中自动创建并将相关文件放在对应的文件夹中,这里面的文件直接影响系统的正常运行,多数都不允许随意改变。它的存在对维护计算机系统的稳定具有重要作用。在系统文件丢失或者误删时,就有可能导致电脑无法正常开机,今天我就给大家分享几个恢复系统的方法。 一、进入安全模式 在重启或者电脑开机的时候,在进入Windows系统启动画面之前按下F8键(或者按住ctrl键不放),就会出现windows高级选项菜单,选择安全模式,回车就直接进入。       进入安全模式后,在桌面打开360安全卫士,点击功能大全     在功能大全里面找到并添加系统急救箱功能     添加之后打开系统急救箱,他会自动扫描系统文件     扫描之后如果有系统文件丢失,他会提示,这时候我们点击修复系统文件     修复之后重新启动电脑即可 如果电脑上没有安装360安全卫士,把360的安装包用U盘拷贝到电脑上安装。 二、最后一次的正确配置。     开机按F8进入windows高级选项菜单,选择最后一次的正确配置进入系统即可。此方法进入系统,最后一次正确配置节点以后存在C盘的文件将会被清除。 三、恢复系统备份 如果之前为系统做过备份的话,则可以恢复系统备份。开机的时候选择一键还原,然后选中备份文件进行恢复。不过备份系统节点以后存在C盘的文件将会清除。     四、重装系统 如果360急救箱、最后一次正确配置都不起作用,之前又没有为系统进行备份,那就只有重装系统了。把电脑设置为光驱或U盘启动,然后选择“把系统安装到第一分区”,按照提示进行安装即可。     重装系统之后整个C盘数据都会清除,在后面的文章里我会为大家讲解如何重装系统。 一般异常关机是造成系统文件丢失的主要原因,所以在电脑使用中我们应该避免强制关机,突然断电情况的发生,同时要保证正确安全的使用电脑,防止电脑中毒或者误删系统文件。

    2021年9月9日
    50
  • 海外网红带货暴涨10倍、订单量暴增80倍

    当品牌化成为跨境行业未来的发展趋势,当品牌成为一种行业基调,当品牌卖家成为一个产品优质与否的判断标准,怎么打造品牌、如何突破当前流量渠道变现难题,成为卖家们绞尽脑汁的问题。 而网红带货这一新风潮,则让不少卖家看到了解决问题的思路和途径。比起国内市场,海外市场的网红带货未到白热化的地步,甚至仍在孵化阶段,对于卖家来说有较大的空间。 UV暴涨6倍、GMV暴涨10倍、订单量暴增80倍……都是这一形式给商家带来的巨大反馈,但更重要的是,怎么做? 海外网红营销成为品牌重要“战场” 网红营销在国内电商平台上随处可见,无论种草平台、购物平台、社交平台上都能看到KOL带货的身影。比起大牌明星,部分KOL的带货能力不仅更强、价格还更便宜、更能下沉到市场的各个群体当中。如此高效益的带货方式,逐渐被品牌商家所采用,成为品牌营销的重要“战场”,并由此风靡。 而向来模仿和学习能力超强的中国卖家,自然不会错过任何能够提高自身效益的渠道和手段,网红营销这一带货形式在海外传播开来。得益于其高投入产出比的效益,品牌商家在该营销模式上的花费也越来越多。据彭博社调查,每1美元的KOL营销投入成本,即可获得高达6.5美元的回报,而品牌每月用于KOL营销的费用超过2.55亿美元。第三方机构Influencer MarketingHub预测,到2022年,网红营销将有望成为一个价值150亿美元的行业,并保持着高速增长的态势。 尽管如此,现阶段对于海外市场来说,网红营销的带货模式仍未进入白热化。有行业人士指出,海外消费者的购买意识形态和国内完全不同,他们更倾向于能够持续输出有价值的内容;理性地通过不同渠道搜索与产品相关的各种内容;更看重品牌价值观和品牌理念;重视品牌给予用户的陪伴体验感。但目前,能够完全做到满足海外消费者需求的品牌商家并不多,对应的海外网红营销体系并不是非常成熟, 主要原因有几点: 1、 国内外文化差异较大,虽然网红营销的模式方法可借鉴,但国内的内容生态无法完全复制到国外,国内大多数MCN机构对于跨境行业的了解并不透彻; 2、 如第1点所提,由于MCN机构的不全面,造成对应的外籍主播人才培养短缺,不能很好地匹配商家和消费者的需求; 3、 从第2点延伸,由于国内的KOL不能很好地匹配海外消费者,商家不得不从海外寻找网红KOL,但是这又面临着沟通难、周期长、成本高、配合度低等问题,对于商家而言反而容…

    2021年8月22日
    14
  • 短视频竞品深度分析报告:抖音VS快手有什么不同?

    短视频行业的竞品分析报告,选择了行业的两个头部产品——抖音和快手作为对比竞品,目的在于分析在快手发展起步较早,且已经积累了大量用户的背景下,抖音是如何在短短4年之内狂飙突进,在用户规模以及盈利能力两个层面超越快手的

    2021年4月27日
    17
  • 有哪些好用的苹果iOS模拟器推荐?

    我们都知道安卓模拟器,通过安卓模拟器可以实现在电脑上操作安卓手机应用、手机游戏。因此,也有不少苹果用户想知道:有没有苹果模拟器。

    2021年5月4日
    140
  • 时间是主观的还是客观的?为何引力和速度会影响时间快慢?

    时间到底是客观存在还是人类主观定义的? 严格来讲,世界上没有绝对的客观,我们对大自然的认知都是主观的,任何形式的认知都是以某种立场和不同的角度为基础的。 举个通俗的例子,你面前有一张桌子,它就是实实在在的桌子,老天爷来了也不可能说是汽车吧。 但如果我们深入研究这张桌子,一旦进入了微观世界,问题就会变得诡异起来。 桌子由什么构成的?分子,然后是原子,质子中子,一直到更小的夸克和电子。但接下来呢?电子和夸克又是由什么构成的呢?弦理论认为万物都是由最基本的弦构成的,这个理论很难得到实验验证。 但无论如何,但我们对任何事物追根溯源,都会发现主观和客观的界限划定会变得越来越模糊。在宏观世界或许存在很多客观事物(比如那张桌子),不过一旦到了微观世界,就会变得模糊起来。 那么,时间是主观还是客观的呢?首先我们需要弄清楚“到底什么是时间?”。 在日常生活中,我们需要时间的概念,否则我们就可能寸步难行。我们生活在三维空间里,但爱因斯坦又提出了时间的维度,这样就形成了四维时空。 爱因斯坦让我们明白,时间与空间是不可分割的,任何把时间和空间分割开来的行为都没有意义。这与之前的认知有巅峰性的区别,之前人们认为时间就是时间,与空间没有关系。 所以,单独讨论时间是没有意义的,就像描述任何事件都需要四个坐标(三个空间坐标,一个时间坐标),也就是所谓的地点和时间。 爱因斯坦的老师闵可夫斯基提出了“光锥”的概念:光锥即命运。看下图。 由于光速是有限的,任何事件(用P表示)为出发点画出光锥,P点上方是事件P可能会带来的未来事件,下方是过去的光锥。 过去现在以及未来的所有事件都在光锥内,光锥外是没有意义的,也是不允许的。也许存在光锥外的事件,但那是人类无法理解也无法触及的。 所有的这些概念都只是人类认知世界的一种方式,时间概念也是一样。所以,客观来说,时间是不存在的,存在的是“时间概念”,时间与空间合并为“时空概念”。 至于为什么引力和速度会影响时间,这就需要用爱因斯坦的相对论去解释了。 相对论告诉我们,时空并不是绝对不变的,也不是平坦的,而是相对的,可以弯曲的。所有物体(比如说大型天体)都在时空中运动,虽然时空是弯曲的,实际上物体在四维时空中是沿“直线”在运动。 两者并不矛盾。四维时空中的“直线”与三维空间的“直线”有本质不同,扭曲的四维时空的直线轨迹被称为测地线,也是四维时空中的最短距离,就像三维空…

    2022年6月20日
    52