可以说,我确实没在工作中用过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});}}
}