程序员为保饭碗,开始”防御性编程”...

PCI Express 权威指南:从协议原理到芯片实现 目录 全文总览第一部分:PCIe体系结构概览第1章 互连技术的演进与PCIe的诞生1.1 从ISA到PCI:并行总线的辉煌与瓶颈1.2 PCI-X的尝试与局限1.3 串行革命:从AGP、PCI到PCIe的范式转移1.4 PCIe的核心优势第2章 PCIe系统全局视角2.1 系统拓扑:Root Complex, Switch, Endpoint的职能与关系2.2 拓扑结构实例:服务器、工作站、嵌入式系统2.3 枚举与配置:系统如何发现和组织PCIe设备2.4 地址空间第3章 PCIe协议分层架构3.1 分层模 阅读详情

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

efc7a18863e5ea7df5ce005f8fa42eac.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:waynblog

260fa39338226af33bb0611b368c9a17.jpeg


最近程序员界又重新流行起来了防御性编程这个概念,早期嘞,这个概念代表是一种细致、谨慎的编程方法。

防御性编程的目的是为了开发可靠的软件,我们在设计系统中每个组件的时候,都需要使其尽可能的 "保护" 自己。

但是 2023 年以来,国内的互联网市场是什么行情,相信大家都清楚。

因此为了体现程序员们在公司代码中的不可替代性?"防御性编程" 概念又重新流行了起来。

不过这次它可不再是保护程序了,而是保护广大程序员群体 😎。

12a4332917f37c460e1f8c8ec5cb81d2.jpeg

所以我就给大家介绍一下,新时代背景下的 "防御性" 编程理念,如何实践 😜。

本文大纲如下,

874e6e0f569881dbc689df13c9df5e4e.png

代码书写

变量名称使用单一字符

Java 语言里变量名只能由 Unicode 字母、数字、下划线或美元符号组成,并且第一个字符不能是数字 。

那么对于单一字符的变量名称来说,26 个字母大写加 26 个字母小写加下划线以及美元符一共有 54 种变量名称,想一想难道这些还不够你在单个 Java 文件里给变量命名用吗?

兄弟这一般够用了。

使用中文命名

兄弟,大家都是中国人,肯定看得懂中文咯。

b67f4f936bcd0d918afcce8c9c118f95.png

就问你,Idea 支不支持吧,有没有提示说你变量名不规范嘛!没提示就是规范。

还有一点,兄弟们,还记得上面 Java 语言里变量名组成规范吗?中文也在 Unicode 编码里面,所以其实我们还可以用中文作为变量名称。

我已经帮你查好了,Java 里常用的 utf-8 编码下,支持的中文字符有 20902 个,所以上面单一字符的变量名称还需要新增 20902 种 😃,简直完美。

0189831d382319824748ea15d7c8cc9d.png

使用多国语言命名

f346b979edb813c9acbdc105c4773b84.png

不多说,我就问你看不看得懂吧,看得懂算你厉害,看不懂算你技术不行。

7159dea5b0c708acea955b1990eb62ec.jpeg

你问我看不看得懂,我当然看的懂,我写的,我请百度翻译的 😝。

01c52de98a6a17eaf1cca034447c161d.png

这些变量名称命名法则,不仅适用与 Java,也适用于 JavaScript,广大前端程序员也有福了。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

CV 大法

不要抽象、不要封装、不要继承、不要组合,我只会 CV。

抽象

抽象:我可以让调用者只需要关心方法提供了哪些功能,而不需要知道这些功能是如何实现的。我的好处是可以减少信息的复杂度,提高代码的可读性和易用性,也方便了代码的修改和扩展,我厉害吧。

我:我只会 CV。

抽象:...

封装

封装:我可以把数据和基于数据的操作封装在一起,使其构成一个独立的实体,对外只暴露有限的访问接口,保护内部的数据不被外部随意访问和修改。我的好处是可以增强数据的安全性和一致性,减少代码的耦合性,也提高了类的易用性。看见没,我比抽象好懂吧。

我:我只会 CV。

封装:...

继承

继承:我可以让一个类继承另一个类的属性和方法,从而实现代码的复用和扩展。我可以表示类之间的 is-a 关系,体现了类的层次结构和分类。我的好处是可以避免代码的重复,简化类的定义,也增加了代码的维护性。我可是面向对象三大特征之一。

我:我只会 CV。

继承:...

组合

组合:我可以让一个类包含另一个类的对象作为自己的属性,从而实现代码的复用和扩展。我可以表示类之间的 has-a 关系,体现了类的关联和聚合。我的好处是可以增加类的灵活性和可变性,也降低了类之间的耦合性。不要用继承,我可是比继承更优秀的。

我:我只会 CV。

组合:...

不要问为什么我只会 CV,因为我的键盘只有 CV。

1949fdf4a879503c50ae3a72d39e4c41.jpeg

刚出道时我们嘲讽 CV,后来逐渐理解 CV,最后我们成为 CV。

CV 的越多,代码就越复杂,代码越复杂,同事就越难看懂,同事越难看懂,就越难接手你的代码,你的不可替代性就越来越强。

那么我们防御性编程的目的不久达到了嘛。

兄弟,听我说,给你的代码上防御,是为了你好!

729657984d1e166a2b060d07b4729d8a.jpeg

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

产品开发

运营配置、开发配置、系统配置直接写死,用魔法值,没毛病。

产品每次提需求,代码实现一定要做到最小细粒度实现,做到需求里少一个字,我的代码里绝不会多一个词,注释也是不可能有的,我写的代码只有我看得懂不是防御性编程的基操吗?

我的代码我做主。

产品原型不提,我绝对不会问。要做到这系统有你才能每一次发版上线都是相安无事,一旦缺少了你,鬼知道会发生什么。

我们能做的就是牢牢把握项目中核心成员的位置。这个项目组少了你,绝对不行!

69827452b55c940e6b43f0b8569175dc.jpeg

最后聊两句

虽然本文是给大家将防御性编程如何实践,但是我还是希望每一个互联网打工人都能平稳度过这波寒冬。

积蓄力量,多思考,多元发展。

在来年,春暖花开,金三银四之月,都能找到自己满意的工作,得到属于自己的果实。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,“长按”或“扫描”下方二维码噢:

688449933e1da2c27abb2c1a509295c8.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

d57b0624d1aa5594ca08095c577195f5.png

bb1a22577fb52b8505a40b0b3f9a818e.pngd03fb268ced6649d27fe78a6e3e1ca02.png74e487f1ffb295df960b5008a45c0234.png73ea98419079bac923600569042bd082.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
038、OIS 光学防抖原理与调试:陀螺仪数据融合、Lens Shift OIS 的闭环控制 本文分享了OIS光学防抖系统的调试经验和关键技术要点。作者通过一个"呼吸感"Bug案例,揭示了陀螺仪数据融合和闭环控制的重要性。系统介绍了OIS的三个关键层次:传感器层(陀螺仪特性)、控制层(复合算法)和执行层(闭环控制)。重点讲解了陀螺仪数据融合的互补滤波实现、Lens Shift闭环控制的PID优化策略(包括积分抗饱和和微分滤波),以及前馈补偿的应用。最后总结了调试中的关键问题:数据同步、霍尔校准、温度补偿和性能评估方法,并给出实用建议:平衡算法复杂度与性能、预留带宽余量、重视产线校准等。文章强调OIS 阅读详情

相关推荐

5G中的RedCap

5G中的redcap

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 2527

防御性编程(Defensive Programming)

garbage in ,garbage out (GIGO),作为一条计算机界的“俗语”,一条相对“学院派”的设计理念,我们或多或少都有听过。但在实际的工程环境下,GIGO已然成为了一种“不作为”、“缺乏安全性”的标志。所以我们要的是:不论进来什么,好的程序都不会生成“垃圾”。

weixin_42137269的博客 3246

Zynq/ZynqMP PL端以太网实战:手把手教你用GMII to RGMII IP和EMIO打通网络(附KSZ9031 PHY驱动修改)

本文详细介绍了在Zynq/ZynqMP平台上使用GMII to RGMII IP核和EMIO接口实现PL端以太网通信的全栈开发流程,特别针对KSZ9031 PHY芯片提供了定制化驱动修改方案。内容涵盖硬件设计、Vivado配置、裸机驱动开发、Linux系统集成及实战调试技巧,帮助开发者高效解决工业控制和边缘计算中的以太网连接问题。

weixin_30642561的博客 582

防御式编程(Defensive Programming)

防御式编程是一种安全的编程思想,本质上是要求开发人员对代码和线上环境报以辩证的态度和敬畏之心。它通过以下途径,从而来提升系统健壮性:提高工程质量——减少bug和问题;提高源码可读性—— 源码应该变得可读且可理解,并且能经受code review;让软件能通过预期的行为来处理不可预期的用户操作。作为一名优秀的开发者,不能将希望完全寄托于测试,而是在设计、开发阶段,对系统的异常和边界有充分的认知和考量,这是防御式编程带给我们的思考。

AlbenXie的博客 2294

GXHT40温湿度传感器:I2C通信与CRC校验实战解析

本文详细解析GXHT40温湿度传感器的I2C通信协议与CRC校验机制,涵盖硬件连接、时序控制、数据读取及加热功能应用。通过实战案例分享优化技巧与异常处理,帮助开发者提升嵌入式系统中传感器数据的准确性与可靠性。

rgv234567的博客 243

深度学习赋能胶囊内镜:AI如何实现胃肠道出血的自动检测与分割

在计算机视觉领域,图像分类与目标检测是处理医学影像分析的核心技术。其原理在于通过卷积神经网络(CNN)自动学习图像中的多层次特征表示,实现对特定目标的识别与定位。这项技术的价值在于能够将医生从海量、重复的阅片工作中解放出来,提升诊断效率与一致性,尤其在处理如胶囊内镜产生的数万张连续图像时优势显著。其应用场景广泛覆盖了医学影像的辅助诊断,例如在消化内科,对胃肠道出血的早期发现与精准定位具有重要临床意义。本文聚焦于利用深度学习模型,如U-Net和EfficientNet,构建一个能够从复杂多变的胶囊内镜图像中,

weixin_42533910的博客 383

防御性编程

防御式编程的分析

m0_53817260的博客 2786

新手也能搞定!用ADS 2023从零设计一个超宽带Wilkinson功分器(附完整版图)

本文详细介绍了如何使用ADS 2023从零开始设计超宽带Wilkinson功分器,涵盖介质板参数设置、微带线计算优化、版图生成验证等关键步骤。通过实例演示和常见问题排查,帮助射频工程新手快速掌握功分器设计技巧,提升设计效率。

weixin_42692935的博客 477

大厂程序员提倡“防御性编程”:故意把代码写得很烂,万一自己被裁,要确保留下的代码不可维护!...

点击关注公众号:互联网架构师,后台回复2T获取2TB学习资源!上一篇:2T架构师学习资料干货分享大家好,我是互联网架构师!“码农们在工作中绝对不能按以前书上说的写优美清晰代码,要防御性编程,确保自己被裁,剩下的代码也是不可维护的”。近日一则关于用“防御性编码”应对大厂裁员潮的消息冲上职场社交平台热搜。这一策略背后的逻辑是,通过晦涩难懂、难以维护的代码,确保自己一旦离职,留下的代码难以替代,从而在...

emprere的博客 420

【目标检测】全局上下文感知的详解

目标检测中的全局上下文感知(Global Context Awareness)​是指模型在定位和识别目标时,能够有效利用图像中全局或大范围的上下文信息(如场景语义、目标间关系、空间布局等),而不仅仅依赖局部特征。这种能力显著提升了检测的鲁棒性,尤其是在复杂场景(如遮挡、小目标、密集目标)中表现突出。

浩瀚之水的专栏 650

基于STM32L4XX、HAL库的YT8531C-CA以太网收发器(PHY)驱动程序设计

是一款由裕太微推出的高性价比、低功耗的单端口 10/100M 以太网物理层收发器(PHY)。它通过标准的 MII(介质独立接口)或 RMII(精简介质独立接口)与微控制器的 MAC 层连接,实现将数字信号与网络模拟信号之间的转换。支持自动协商(Auto-Negotiation),自动选择最高速率和双工模式。支持 HP Auto-MDIX(自动交叉直连),无需区分直通线或交叉线。低功耗设计,特别适合电池供电或对功耗敏感的 STM32L4 应用。支持 MII 和 RMII 接口,节省引脚(RMII模式)。

zhusl6688的博客 628

大厂裁员逼出奇招,“防御性编程”能否自救?

根据《刑法》第二百八十六条,凡是违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役,后果特别严重的,处五年以上有期徒刑。“防御性编码”应对大厂裁员潮策略背后的逻辑是,通过晦涩难懂、难以维护的代码,确保自己一旦离职,留下的代码难以替代,从而在某种程度上提高自己的“不可替代”性。就企业的角度而言,需要重视大厂程序员们面临的困境和压力,鼓励开放、协作的编程文化,让每个程序员都能在团队中发挥自己的最大价值,从而提高团队的整体效率。

IT界那些事儿 6271

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

别让“防御性编程”毁了我们的职业

最近,随着一些大厂的陆续暴雷,以及一些裁员风波,我在不少自媒体平台都刷到了关于新式“防御性编程”的段子,初看感觉只是个文娱的文案,但之后回忆过往,再结合自己的工作经历,发现现在这种现象确实是越来越普遍了。

weixin_42055277的博客 480

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

大厂程序员提倡“防御性编程”:故意把代码写得很烂,万一自己被裁,要确保留下的代码不可维护!

根据《刑法》第二百八十六条,凡是违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役,后果特别严重的,处五年以上有期徒刑。就企业的角度而言,需要重视大厂程序员们面临的困境和压力,鼓励开放、协作的编程文化,让每个程序员都能在团队中发挥自己的最大价值,从而提高团队的整体效率。此外,在这个快速变化的行业中,程序员更应该注重提升自己的技能和知识,以适应新的技术和挑战,而不是依赖于编写晦涩难懂的代码来保住自己的工作。

IT_1024的博客 1276

故意把代码写得很烂,这样的 “防御性编程“ 可取吗?

程序员搞防御性编程固然可以理解,但这样子做,短期来看,是程序员和企业的互相伤害;长期来看,对程序员自身的伤害更大!

yangshuquan的专栏 2811

终极防御性编程神器

现在IT大环境下滑,开始催生出了一个程序员极地求生新技能:防御性编程。 ​ 原本防御性编程的意思是在写业务代码时应该要更多的考过各种可能出现的边界情况,做更多防御性的考量。但是,防御性编程有了新的含义。那就是让我的代码只有我能看懂,别人都看不懂。这样,别人就无法抢我的饭碗了。老板裁员时自然也要掂量掂量了。

roykingw的专栏 1090

大厂程序员提倡“防御性编程”:故意把代码写很烂,万一被裁,要确保留下的代码不可维护...

上一篇:一线体面男的收入“防御性编程”,这词儿最近在程序员圈子里挺火的。说白了,就是一些大厂的员工为了不被裁,开始在代码里耍小聪明,比如埋后门、异常自动报警,目的就是让自己变得“不可替代”。这种做法,有人叫好,有人摇头。有人觉得,公司不讲规矩,员工也只能出此下策。也有人觉得,这事儿虽然短期内可能保住工作,但长远看,对自己、对团队都没好处。代码写得乱七八糟,最后倒霉的还是自己,毕竟代码评审那关就难过...

Java和Android架构 289

大厂程序员提倡“防御性编程”,是自保还是作死?

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。如果我的分享对你有帮助,请关注我,一起向上进击。创作不易,希望大家给一点鼓励,把公众号设置为“星标”,给文章点个“赞”和“在看”,谢谢大家啦~今天的文章也是关于职场和防御性编程的话题,希望为大家呈现更加全面的观点。本文分享自51CTO技术栈 -如烟。以下是正文:***“码农...

codingpy的博客 155

为什么要关注“防御性编程”?

什么是防御性编程?为什么要这样做?

分享即是最好的学习 466

如何写出防御性代码(屎山代码)

各大公司纷纷实现广进计划,开猿节流,吾辈程序员家人们深受其害。 为了咱们保住咱们的饭碗,形成护城河,行程核心竞争力,防止被裁,必须学会“防御性性编程”,写出“不可维护的代码”

hi_bigguy的博客 1086
上一篇: JDK 21:GC 不断改进,性能更上一层楼
下一篇: 好好的系统,为什么要分库分表?
公众号-芋道源码
博客等级 码龄10年 1634粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值