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

news/2024/10/22 3:47:34/

可以说,我确实没在工作中用过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.ppmy.cn/news/1540963.html

相关文章

【从零开始的LeetCode-算法】3194. 最小元素和最大元素的最小平均值

你有一个初始为空的浮点数数组 averages。另给你一个包含 n 个整数的数组 nums&#xff0c;其中 n 为偶数。 你需要重复以下步骤 n / 2 次&#xff1a; 从 nums 中移除 最小 的元素 minElement 和 最大 的元素 maxElement。将 (minElement maxElement) / 2 加入到 averages …

nginx中的HTTP 负载均衡

HTTP 负载均衡&#xff1a;如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上&#xff0c;我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡&#xff1a; upstr…

C语言头文件#ifndef条件编译用法

C语言中的头文件定义头 C语言里面经常看别人写的头文件&#xff1a; #ifndef C_CLIENT_H_ #define C_CLIENT_H_XXXX #endifXXX为真实的头内容&#xff0c;一直不大懂为何要加#ifndef C_CLIENT_H_这样的内容&#xff0c;其中C_CLIENT_H_大概是和自己的.h文件同名的一个大写标识…

025 elasticsearch索引管理-Java原生客户端

文章目录 pom.xml1创建索引2.创建索引并设置settings信息3.创建索引并设置mapping信息4.删除索引库5.给未设置mapping的索引设置mapping elasticsearch版本7.10.2&#xff0c;要求java客户端与之相匹配&#xff0c;推荐Springboot版本是2.3以上版本 依赖配置使用的是JUnit 5&am…

如何使用Rancher管理K8S集群

目录 1 Rancher介绍 1.1 Rancher简介 1.2 Rancher和k8s的区别 1.3 Rancher使用案例 2安装rancher 2.1 初始化实验环境 2.2 安装Rancher 2.3 登录Rancher平台 3 通过Rancher管理已存在的k8s集群 4 通过Rancher仪表盘管理k8s集群&#xff1a;部署tomcat服务 文档中…

C++面试速通宝典——29

543. 简述#ifdef、#else、#endif和#ifndef的作用 利用#ifdef、#endif将程序功能模块包括进去&#xff0c;以向特定用户提供该功能。 在不需要时用户可轻易将其屏蔽。 #ifdef MATH #include "math.c" #endif 在子程序前加上标记&#xff0c;以便于追踪和调试。 …

Java JDK的面试题

关于Java JDK的面试题&#xff0c;这里有一些常见的问题和答案&#xff0c;可以帮助你准备面试&#xff1a; JDK、JRE和JVM的区别&#xff1a; JDK&#xff08;Java Development Kit&#xff09;是Java开发工具包&#xff0c;包含了JRE和开发工具&#xff08;如javac编译器和ja…

在win系统上做生信数据分析如何快速检查和填写正确的文件路径

在win系统上做生信数据分析如何快速检查和填写正确的文件路径&#xff0c;避免分析报错 文件路径没有填写正确导致分析报错或闪退的问题 视频教程 https://www.bilibili.com/video/BV1mUmHYiESC/ (在win系统上做生信数据分析如何快速检查和填写正确的文件路径&#xff0c;避…