写了十几年程序,今天才第一天知道什么是屎山代码

可以说,我确实没在工作中用过Javascript,因为我从未见过如此“厚颜无耻”的代码

我曾经也是学过2~3年,还是JQuery的年代,但应该确实没在实战中用过,否则我怎么会不记得写过这些屎山代码的???

(当年,第一个吃到螃蟹的,赚到第一桶金的是DICUZ,PHP的;真还不是写JAVASCRIPT的)

 一个看上去平平无奇,像模像样的类Js代码

代码1

            recipeSection.Add(recipeRow);//在上面套用 preset??:自己写的方法:VisualElementPresets.CreateStandardCategoryEditor(),作用是再套了个 MemberGroupControl()//就是用category 绘制ve.Add(new Label("Categories(强行套用Category 的[Inspector])").CenterContents());ve.Add(groupControl);//group == category ,就是用 categoriesCtl 做绘制。。。。。ve.Add(recipeSection);   return ve; 

 结果某一天。。。。。

要是,你只是想在Unity VisualElement UI 添加一个按钮 Button

代码1-1

            recipeSection.Add(recipeRow);//在上面套用 preset??:自己写的方法:VisualElementPresets.CreateStandardCategoryEditor(),作用是再套了个 MemberGroupControl()//就是用category 绘制ve.Add(new Label("Categories(强行套用Category 的[Inspector])").CenterContents());ve.Add(groupControl);//group == category ,就是用 categoriesCtl 做绘制。。。。。ve.Add(recipeSection);//在这"再添加一个操作按钮吧,测试GridView"));var testButton = new Button(() => {//这是一个构造函数??(不是,TMD这是一个clickEvent,不是构造函数。。。。)// 下面的{text = "xxxxx"},这个描述语言,TMD才是构造函数,就问你惊喜不惊喜,意外不意外???// 下面这么写C# 构造函数,也是有不少的。。。。。////////可以插入一万行代码,事实上 Init的代码就不会少。。。。}){ text = "测试GridView(ItemObjectEditor)" };//这里加的 text 描述。。。。ve.Add(testButton);return ve;

如果我什么都不说,一般人会不会看到这样的代码就给我扣帽子:“这样的代码,大牛写的真好啊,就是不同于常人,非常飘逸,肯定另有深意,简直的”

写JavaScript的都是什么人?面对这样的屎山代码,这些年,你们都是怎么过 的??

我好像曾经在2~3个团队,明令禁止这么写代码

而必须规范地写成如下:

但其实再多地外部规范,远不及代码本身底层规则 ,很快这些规范就不会被执行,也多此一举立规范,和立FLAG是差不多的逻辑,根本不要立FLAG

"//--------------------"

当然,我的文章都写很多废话的

看,这又是一句废话

就问你,烦不烦 

"//----------------------/"

"//----------------------// 又是一行废话,备注 //"

代码2

            recipeSection.Add(recipeRow);//在上面套用 preset??:自己写的方法:VisualElementPresets.CreateStandardCategoryEditor(),作用是再套了个 MemberGroupControl()//就是用category 绘制ve.Add(new Label("Categories(强行套用Category 的[Inspector])").CenterContents());ve.Add(groupControl);//group == category ,就是用 categoriesCtl 做绘制。。。。。ve.Add(recipeSection);//在这"再添加一个操作按钮吧,测试GridView"));var testButton = new Button(){ text = "测试GridView(ItemObjectEditor)" };//这里加的 text 描述。。。。testButton.addClick(OnClick);////写成EventWarpper(testButton).click += XXXX 都好//写多少行都行,都比较好//就是一行就是一个功能//是一行就行,重点不在于行数太多,而是每一行需要意义明确//千万不要学Json 无意义的括号这种 {  | =》 | });         ve.Add(testButton);return ve;//无论是调试,还是规范,还是可阅读性,还是编辑器friendly
//都比Javascript 要好
//而 Javascript 为什么越看越像屎山代码????
//这个世界上,其实没那么屎山代码
// 30%的JavaScript 容易产生屎山代码,而30%在比例用Js,这个比例就很恐怖了
//当然我不靠Js赚钱,所以怎么吐槽都行。。。。。
function OnClick(eve)
{}

//------------------ /

最终改成这样,是不是舒服很多???

代码2-final

            //。。。。。。。。。。recipeSection.Add(recipeRow);//在这"再添加一个操作按钮吧,测试GridView"));var testButton = new Button(testButtonClick);testButton.text = "测试GridView(ItemObjectEditor)";//这里加的 text 描述。。。。//在上面套用 preset??:自己写的方法:VisualElementPresets.CreateStandardCategoryEditor(),作用是再套了个 MemberGroupControl()//就是用category 绘制ve.Add(new Label("Categories(强行套用Category 的[Inspector])").CenterContents());ve.Add(groupControl);//group == category ,就是用 categoriesCtl 做绘制。。。。。ve.Add(recipeSection);//在这"再添加一个操作按钮 baabababa”ve.Add(testButton);return ve;}void testButtonClick(){ }

一个乱套,而崩坏的世界:

代码3

using System;
using System.Diagnostics;
using UnityEngine;
using UnityEngine.UIElements;
using Object = UnityEngine.Object;namespace Polyperfect.Crafting.Edit
{public class OpenForEditManipulator : Clickable{/// <summary>/// ObjectEditWindow.cs 点击item事件;会创建一个 window/// </summary>/// <param name="getObject"></param>/// <param name="clickCount"></param>/// <param name="ve">这个 ve 会乱动,所以需要 refreshAction()兜底刷新</param>/// <param name="refreshAction"></param>public OpenForEditManipulator(System.Func<Object> getObject, int clickCount,VisualElement ve, Action<VisualElement,Object> refreshAction = null): base(() =>ObjectEditWindow.CreateForObject(getObject(), ve,refreshAction))//又是一个强行闭包{
//            UnityEngine.Debug.LogError("fffff click??");//一个点击,触发了15次。。。一个compile刷新 ,又执行了45次。。。。。//一共触发了60次。。。。//一共触发了60次。。。。//一共触发了60次。。。。//一共触发了60次。。。。.......//一共触发了60次。。。。.......//一共触发了60次。。。。..............//而且是多次触发。。。。//而且是多次触发。。。。//而且是多次触发。。。。//这是 一个构造函数,你敢想像//这是 一个构造函数,你敢想像//这是 一个构造函数,你敢想像activators.Clear();activators.Add(new ManipulatorActivationFilter {button = MouseButton.LeftMouse, clickCount = clickCount});}}
}

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

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

相关文章

责任链模式下,解决开闭原则问题实践

前言 在现代软件工程中&#xff0c;设计模式是解决常见问题的有效工具之一。它们吸收了前人的经验&#xff0c;不仅帮助开发者编写更清晰、更可维护的代码&#xff0c;还能促进团队之间的沟通和协作。责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;作为一…

无人机+视频推流直播EasyCVR视频汇聚/EasyDSS平台在森林防护巡检中的解决方案

随着科技的飞速发展&#xff0c;无人机技术在各个领域的应用日益广泛&#xff0c;特别是在森林防护与巡检方面&#xff0c;无人机以其独特的优势&#xff0c;为传统林业管理带来了革命性的变化。本文将探讨无人机在森林防护巡检中的解决方案&#xff0c;分析其工作原理、优势及…

基于SSM+微信小程序的电子点餐管理系统(点餐1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的电子点餐管理系统实现了管理员及用户。管理员实现了首页、个人中心、餐品分类管理、特色餐品管理、订单信息管理、用户管理、特价餐品管理、活动订单管理、系统管理。…

【论文学习与撰写】使用endnote工具进行论文参考文献的引用与插入

目录 1、软件的安装 2、放入endnote格式文献 3、endnote里文献管理 4、论文里引用参考文献的插入 5、参考文献的格式转换&#xff0c;及格式的下载 1、软件的安装 关注软件管家&#xff0c;进行下载软件和安装软件 下载通道②百度网盘丨下载链接&#xff1a; https://pa…

js.矩阵置零

链接&#xff1a;73. 矩阵置零 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],…

Flutter 11 Android原生项目集成Flutter Module

本文主要讲解如何在已有的Android原生老项目中集成Flutter模块。 实现流程&#xff1a; 1、在Android原生项目根目录下&#xff0c;创建Flutter Module&#xff1b; 2、修改Android原生项目settings.gradle&#xff0c;绑定 Flutter Module&#xff1b; 3、修改Android原生…

15分钟学Go 第6天:变量与常量

第6天&#xff1a;变量与常量 在Go语言中&#xff0c;变量和常量是编程的基础概念。理解如何定义和使用它们不仅能帮助我们管理数据&#xff0c;还能增强代码的可读性和可维护性。在本章中&#xff0c;我们将详细探讨Go语言中的变量和常量&#xff0c;涵盖它们的定义、使用、作…

[Xshell] Xshell的下载安装使用及连接linux过程 详解(附下载链接)

前言 Xshell.zip 链接&#xff1a;https://pan.quark.cn/s/5d9d1836fafc 提取码&#xff1a;SPn7 安装 下载后解压得到文件 安装路径不要有中文 打开文件 注意&#xff01;360等软件会拦截创建注册表的行为&#xff0c;需要全部允许、同意。或者退出360以后再安装。 在“绿化…

spdlog学习记录

spdlog Loggers&#xff1a;是 Spdlog 最基本的组件&#xff0c;负责记录日志消息。在 Spdlog 中&#xff0c;一个 Logger 对象代表着一个日志记录器&#xff0c;应用程序可以使用 Logger 对象记录不同级别的日志消息Sinks&#xff1a;决定了日志消息的输出位置。在 Spdlog 中&…

程序员节的故事:在代码的海洋中遨游

#1024程序员节 | 征文# 一年一度的程序员节又来了&#xff0c;作为一名热爱编程的开发者&#xff0c;我总是期待着这个特殊的日子。10月24日&#xff0c;不仅是程序员们的节日&#xff0c;更是我们分享故事、交流技术的时刻。今年的1024征文活动让我感到无比兴奋&#xff0c;因…

Axure重要元件三——中继器修改数据

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;中继器修改数据 主要内容&#xff1a;显示编辑内容、表格赋值、修改数据 应用场景&#xff1a;更新行、表单数据行修改 案例展示&#xff1a; 正文…

STM32L031F6P6基于CubeMX的串口通信调试笔记

用CubeMX创建项目 本实例用的PA14、PA13两个引脚&#xff0c;LPUART1。 对串口参数进行设置&#xff1a; 开启串口中断&#xff1a; 时钟源设置成内部高频时钟&#xff1a; 对项目进行设置&#xff1a; 生成代码&#xff1a; 在串口初始化函数中加入 __HAL_UART_ENA…

C++11 thread,mutex,condition_variable,atomic,原子操作CAS,智能指针线程安全,单例模式最简单实现方式

1.thread 在c11中&#xff0c;c标准委员会开发出了thread库&#xff1b;接下来我们先来看看这个库的使用吧&#xff1b; 1.1 thread类接口介绍 1.1.1 thread类构造函数 我们thread库中的thread类的构造函数可以通过直接传递回调函数与函数的参数来构造线程&#xff1a; int…

THP4 SOP16 芯片 高速光耦芯片

光电耦合器输入端加电信号使发光源发光&#xff0c;光的强度取决于激励电流的大小&#xff0c;此光照射到封装在一起的受光器上后&#xff0c;因光电效应而产生了光电流&#xff0c;由受光器输出端引出&#xff0c;这样就实现了电一光一电的转换。 由于光耦合器输入输出间互相…

mysql主从复制及故障修复

一、主MySQL数据库的配置 分别在三台主机&#xff08;chen2/10.110、chen3/10.120、chen4/10.130)中安装mysql数据&#xff0c;其中chen2/10.110作为主MySQL服务器&#xff0c;其余两台作为从MySQL服务器。 1、在主机上部署mysql数据库 详细的请看上一篇&#xff1a;mysql数据…

2021年江西省职业院校技能大赛(高职组) “云计算应用”赛项样题

2021年江西省职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项样题 【任务 1】基础运维任务[5 分]【题目 1】基础环境配置【题目 2】镜像挂载【题目 3】Yum 源配置【题目 4】时间同步配置【题目 5】计算节点分区 【任务 2】OpenStack 搭建任务[15 分]【题目…

现今 CSS3 最强二维布局系统 Grid 网格布局

深入学习 CSS3 目前最强大的布局系统 Grid 网格布局 Grid 网格布局的基本认识 Grid 网格布局: Grid 布局是一个基于网格的二位布局系统&#xff0c;是目前 CSS 最强的布局系统&#xff0c;它可以同时对列和行进行处理&#xff08;它将网页划分成一个个网格&#xff0c;可以任…

日本HarmonicDrive哈默纳科减速机SHF系列在半导体中的应用

半导体行业作为现代工业的核心领域之一&#xff0c;其技术的不断进步对于推动全球经济和科技创新起着至关重要的作用。而在半导体制造的复杂过程中&#xff0c;各种先进的设备和技术相互配合。日本 HarmonicDrive 哈默纳科减速机 SHF 系列具有优异的定位精度和旋转精度&#xf…

ES6扩展运算符

1.介绍&#xff1a; ... 扩展运算符能将数组转换为逗号分隔的参数序列&#xff1b; 扩展运算符&#xff08;spread&#xff09;也是三个点&#xff08;...&#xff09;。它好比 rest 参数的逆运算&#xff0c;将一个数组转为用逗号分隔的 参数序列&#xff0c;对数组进…

2024年最值得关注的5款数据可视化工具

在信息爆炸的时代&#xff0c;数据可视化工具扮演着至关重要的角色。它们帮助我们从海量数据中提取有价值的信息&#xff0c;并将这些信息以直观、易于理解的方式展现出来。无论是企业决策者、数据分析师还是普通用户&#xff0c;都能通过数据可视化工具更有效地分析和理解数据…