微信网站是多少钱一年wordpress书签插件

web/2025/9/27 8:45:15/文章来源:
微信网站是多少钱一年,wordpress书签插件,广西造建设工程协会网站,洛可可#x1f308;个人主页: 鑫宝Code #x1f525;热门专栏: 闲话杂谈#xff5c; 炫酷HTML | JavaScript基础 ​#x1f4ab;个人格言: 如无必要#xff0c;勿增实体 文章目录 【翻译】再见, Clean Code!正文那是一个深夜次日早晨这只是一个阶段 【翻译】再见… 个人主页: 鑫宝Code 热门专栏: 闲话杂谈 炫酷HTML | JavaScript基础 ​个人格言: 如无必要勿增实体 文章目录 【翻译】再见, Clean Code!正文那是一个深夜次日早晨这只是一个阶段 【翻译】再见, Clean Code! 这篇文章翻译于React核心开发者Dan的这篇博客。 原文链接overreacted.io/goodbye-cle… 正文 那是一个深夜 我的同事刚刚提交了他们整个星期一直在编写的代码。我们正在开发一个图形编辑画布他们实现了通过拖动矩形和椭圆等形状边缘的小手柄来调整其大小的功能。 代码能正常运行。 但显得很冗余。每个形状如矩形或椭圆拥有各自不同的手柄集合而拖动手柄的不同方向会以不同的方式影响形状的位置和尺寸。如果用户按住 Shift 键我们还需要在调整大小时保持形状的长宽比。涉及了大量的数学计算。 代码大致如下 let Rectangle {resizeTopLeft(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeTopRight(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeBottomLeft(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeBottomRight(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math}, };let Oval {resizeLeft(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeRight(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeTop(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeBottom(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math}, };let Header {resizeLeft(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeRight(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math}, }let TextBlock {resizeTopLeft(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeTopRight(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeBottomLeft(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math},resizeBottomRight(position, size, preserveAspect, dx, dy) {// 10 repetitive lines of math}, };那些重复的数学运算令我颇为烦恼。 代码不够整洁。 大部分重复出现在处理相似方向的函数之间。比如Oval.resizeLeft()和 Header.resizeLeft() 就有相似之处因为它们都涉及拖动左侧的手柄。 另一类相似性存在于处理相同形状的所有方法之间。例如Oval.resizeLeft() 与其它 Oval类的其他方法也有共通之处因为它们都是围绕椭圆进行操作。同样Rectangle、Header 和 TextBlock 之间也存在一些重复因为文本块本质上就是矩形。 我有了一个想法。 我们可以这样对代码进行归类从而消除所有重复: let Directions {top(...) {// 5 unique lines of math},left(...) {// 5 unique lines of math},bottom(...) {// 5 unique lines of math},right(...) {// 5 unique lines of math}, };let Shapes {Oval(...) {// 5 unique lines of math},Rectangle(...) {// 5 unique lines of math}, }然后组成他们的行为 let {top, bottom, left, right} Directions;function createHandle(directions) {// 20 lines of code }let fourCorners [createHandle([top, left]),createHandle([top, right]),createHandle([bottom, left]),createHandle([bottom, right]), ]; let fourSides [createHandle([top]),createHandle([left]),createHandle([right]),createHandle([bottom]), ]; let twoSides [createHandle([left]),createHandle([right]), ];function createBox(shape, handles) {// 20 lines of code }let Rectangle createBox(Shapes.Rectangle, fourCorners); let Oval createBox(Shapes.Oval, fourSides); let Header createBox(Shapes.Rectangle, twoSides); let TextBox createBox(Shapes.Rectangle, fourCorners);代码的总大小减半重复的部分也完全消失了如此整洁。如果我们想要改变某个特定方向或形状的行为我们可以在一个地方进行修改而不是到处更新方法。 已经是深夜了我太投入了。我将我的重构代码提交到了主分支然后去睡觉了为自己解开了同事混乱的代码而感到骄傲。 次日早晨 ……并未如我所料。 上司找我进行了一次单独交谈委婉地要求我撤销那次修改。我惊愕不已。旧代码一团糟而我的代码整洁明了 尽管心有不甘我还是照做了。然而我花了好几年才意识到他们是对的。 这只是一个阶段 对“清洁代码”痴迷、热衷于消除重复是我们许多人必经的一个阶段。当我们对自己的代码缺乏信心时往往会将自己的自我价值感和职业自豪感寄托于那些可度量的事物上。一套严格的代码风格规则、一种命名方案、一种文件结构、对重复的零容忍…… 虽然无法完全自动化地消除重复但随着练习这一过程会变得愈发容易。通常情况下每次修改后你都能判断出代码中的重复是增多了还是减少了。因此消除重复仿佛是在提升代码某个客观指标给人以成就感。更糟糕的是它还会影响人们的自我认知“我是那种编写清洁代码的人”。这种错觉具有极强的迷惑性。 一旦我们掌握了创建抽象的能力就很容易对此上瘾只要看到重复的代码就会迫不及待地从中抽离出抽象。经过几年编程历练我们会发现到处都是重复——而抽象化正是我们的新超能力。如果有人告诉我们抽象是一种美德我们会欣然接受并开始评判他人不崇尚“清洁”。 我现在明白那次所谓的“重构”在两方面都是一场灾难 首先我没有与原作者沟通。我在没有征得他们意见的情况下重写了代码并提交。即便这算是一种改进我现在已不再这么认为这种方式也极其糟糕。一个健康的工程团队始终在建立信任。未经讨论就擅自重写队友的代码将严重损害你们在代码库上的协作效率。其次没有什么是免费的。我的代码牺牲了应对需求变更的能力换取了减少重复但这并非一笔划算的交易。例如后来我们需要为不同形状的不同手柄添加许多特例和行为。若沿用我的抽象设计实现这些变更会复杂数倍而若是采用原先“杂乱”的版本这些改动则轻而易举。 那我是否在建议你应该编写“脏”代码呢并非如此。我想强调的是当你谈论“清洁”或“脏乱”时应当深入思考其含义。这些词语会让你产生反感、正义感、美感或是优雅感吗你能否确切指出这些品质所对应的工程成果它们又是如何具体影响代码的编写与修改方式 我当初的确未曾深入思考这些问题只是过分关注代码的外观却忽视了它在一个由充满变数的人类组成的团队中如何演变。 编程是一段旅程。想一想从写下第一条代码至今你已走了多远。第一次体验到通过提取函数或重构类让复杂代码变得简洁想必令你欣喜不已。如果你对自己的技艺引以为豪追求代码清洁自然颇具吸引力。那么就先这样做一段时间吧。 但切勿止步于此。不要成为清洁代码的狂热信徒。清洁代码并非目标而是我们在面对系统无尽复杂性时试图理清头绪的一种手段是在面对未知领域、不清楚某项改动会对代码库产生何种影响时的导航工具。 让清洁代码指引你然后适时放下它。 个人感言clean code固然重要但不可过度封装‍♂️。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天津外贸营销型网站建设怎样做酒店网站ppt

作者:fyupeng 技术专栏:☞ https://github.com/fyupeng 项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 一、介绍 当由于某个业务id发生死循环一直在运行,那么再来一笔相同的业务id执行相同操作&…

汇款账号 网站建设如何让百度收录网站

记录一下成长的历程吧! 刚开始写,没什么文笔,也没什么技术含量,可能主要的是纪录一下平常工作学习中遇到的问题,以及解决的办法吧。或者只有问题,没有解决办法。 前两天项目中遇到的一个问题,由…

广州网站优化服务商整站seo优化推广

引入;发送文件前要准备的工作 分层的基本原则 分层结构中相关的概念 PCISDUPDU 上一层的PDU作为传给下一层的SDU,传输下去 总结

网站建设商城模板培训班设计

作者:Martin Fowler译者:冬哥原文:https://martinfowler.com/articles/remote-or-co-located.html远程工作与同地工作之间不是简单的二分法,相反,团队有多种分布模式,每种模式都有不同的权衡和适合的有效技…

手机参数查询网站宁波网站优化价格

【问题分析】实际工作中,我们经常需要进行统计分析,如统计甘肃省各个地区界内的河流、公路、铁路等的总长度,统计各个地区界内总人口、作物产量、村镇分布等等。ArcGIS提供了强大的空间统计功能,可以一次性操作完成所有操作,省时省力,大大提高了工作效率,减少了错误的发…

宝安做网站的公司网站建设的体会

文章目录1. 题目2. 解题2.1 超时解2.1 改进计算方法1. 题目 假设你设计一个游戏,用一个 m 行 n 列的 2D 网格来存储你的游戏地图。 起始的时候,每个格子的地形都被默认标记为「水」。 我们可以通过使用 addLand 进行操作,将位置 (row, col)…

龙川县建设网站临沂做网站首选

转载自 稍微有点难度的10道java面试题,你会几道? 1、jvm对频繁调用的方法做了哪些优化? 2、常见的攻击手段有哪些?如何防范? 3、restful api有哪些设计原则? 4、hessian是做什么用的?它的…

绍兴网站建设设计制作校园文化设计公司公司排名

70 爬楼梯 (进阶) 爬楼梯问题在我们刚开始学习动态规划的时候作为入门的问题。当时题目考虑的是1或2种走法。如果将能走的台阶设为M,则能产生进阶的题目。通过求解完全背包问题得到。 题目如下: 题目页面 如果最多能走m个台阶&#xff0c…

怎么找到网站站长莱芜百度网站优化

基于Java中的SSM框架实现快餐店线上点餐系统演示 摘要 随着计算机互联网的高速发展。餐饮业的发展也加入了电子商务团队。各种网上点餐系统纷纷涌现,不仅增加了商户的销售量和营业额,而且为买家提供了极大的方便,足不出户,就能订…

昆明网站seo公司seo 网站关键词优化

基于Grad-CAM与KL损失的SSD目标检测算法 人工智能技术与咨询 来源:《电子学报》,作者侯庆山等 摘 要: 鉴于Single Shot Multibox Detector (SSD)算法对中小目标检测时会出现漏检甚至错检的情况,提出一种改进的SSD目标检测算法&…

软装设计案例网站wordpress仪表盘修改

作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题。 【出现频率】 【关键考点】 MVC的含义MVC的结构 【考题分析】  在java Web开发中,存在两…

男人做想看的免费网站杭州企业网站建设 哪里好

一 Web应用模式 在开发Web应用中,有两种应用模式: 1.1 前后端不分离 1.2 前后端分离 二 API接口 为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写…

西局网站建设怎做网站

1、先安装依赖 自行百度搜索或csdn 2.引入:import table2excel from js-table2excel 3、按钮点击事件(我是直接写在button按钮里面的 你们也可以写一个店家事件写进去) onClick{() > {console.log(list);const column [//数据表单{titl…

网站建设收费标准渠道网站文章没有被收录

目录 前言 查看页面原型,明确需求 页面原型 需求 阅读接口文件 思路分析 功能接口开发 控制层(Controller类) 业务层(Service类) 业务类 业务实现类 持久层(Mapper类) 接口测试 前…

南宁做网站公司必荐云尚网络邯郸做网络推广的公司

今天把微软的报表重新部署一遍,发现在不同的浏览器中,显示的尺寸大小不一样。在IE8浏览器中是正常的:而在火狐浏览器中却始终只有全屏的四分之一大小,无论在报表中如何修改尺寸也没有变化。看起来,应该是在浏览器的什么…

电子商务网站建设的方法有哪些古典网站建设欣赏

1、计算机组成结构 计算机组成结构是指计算机系统的各个组成部分以及它们之间的相互关系和功能。通常,计算机组成结构可以分为以下主要部分: 中央处理单元(CPU): CPU 是计算机的大脑,负责执行程序指令和处理…

怎么用网站源码建站技能培训机构排名前十

在过去的六个月里,我们 LinkedIn 的团队一直在努力开发一种新的人工智能体验。我们希望重新构想我们的会员如何进行求职和浏览专业内容。 生成式人工智能的爆炸式增长让我们停下来思考一年前不可能实现的事情。我们尝试了许多想法,但都没有真正实现&…

贷款网站模板东莞网络建站

什么是网站监控 网站监控是持续跟踪网站在互联网上的性能和可用性,以确保其正常运行并提供良好的用户体验的过程,在当今的数字时代,一个表现良好的网站对公司的声誉至关重要,打开速度慢的网站会对用户体验产生负面影响&#xff0…

有几个网站苏州网站建设搭建

文章目录 题目描述基本思路 题目描述 每一本正式出版的图书都有一个 ISBN 号码与之对应。ISBN 码包括9位数字、1位识别码和3位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号- 是分隔符(键盘上的减号),最后一位是识别码&…

360提交网站备案深圳罗湖网站设计

这里是使用的opencv进行图片的读取,自然也是想使用opencv的imshow方法来显示图像,但是在google Colab中不可以使用,所以寻找了一下变通的显示方法。 方法1:使用matplotlib 使用plt需要交换一下r、b通道,否则显示不正常…