用代码拆掉你思维的墙

一个好的框架是可以让大家的代码标准化,这样多人写的代码基本都是统一的,不会存在意大利面条式的代码,过了一段时间,连自己看也看不懂,改也改不了。更别谈别人要接手了。

很多狐友的说我招不到合适的人,新人都培养不起来,没有办法教。那最终的根本原因是不会放手。不会放手,有两种原因

原因之一,是真的不会

像现代的代码开发方式,一概不学,不去交流碰撞,不去看现在编程世界主流的样子是什么。
就拿说一段SQL连接查询表的流程来说:

  1. 创建连接SQLSTRINGCONECT
  2. 连接句柄是否>0,大于0继续。
  3. SQLEXEC 发送 select * from 表名
  4. 拿着表干啥干啥
  5. 关闭连接

每一次操作,每增加一个功能都要来一遍,表多起来,IF 多起来,那就是落落长了。所以一段业务流程几千行那就这么出来了。还有关键一点,很多人连错误异常都不做,如中间连接中断了,就自己写个提示,查询失败,为啥失败,不知道。

有人不服气,说书上就是这么教的?

那书也不是宇宙真理吧。

那现在该怎么做呢?

oBBSQLHelper=newobject("MSSQLHelper","MSSQLHelper.prg")
if oBBSQLHelper.SQLQuery("select * from ryxx","ryxx")<0
  ?oBBSQLHelper.errmsg
  return 
endif
brow

为什么每次查询一个表,自己就要去创建一个SQL连接,由一个类一个对像帮你把这个事干了,行不行?,连接错误处理也替你干了行不行?

学会不写重复的代码,这才是真正的编程核心。

原因之二,不懂管理

管理的原理就是拆分, 把复杂的工作拆成几个简单的工作。

福特汽车利用了流水线,每个人只管一道工序,把这个工序做到极致,这才是效率的最大化,同时也降低了汽车成本,让汽车变成人人都可以买。

在软件开发领域比如,权限已经写完了,新来的成员,压根不需要管权限是怎么实现,只需要在UI层表单newobejct一下权限类,是不是就拥有了权限。

需要调用客户信息的时间,直接就引用客户信息的表单,返回一个客户信息的对象,这样是不是开发也容易了?

团队的搭配:
前端、后端+数据库
前端、后端、美工
PC+苹果+安卓、后端、数据库
很多很多,划分工作的边界,是不是发现很多工作是可以划分开来的?

又从另外的角度,把业务、接单、售后从自己手上分出去OK不?让自己的精力做更有价值的事情?

更多资料:www.sn58.cn

好的,以下是一个简单的 Unity 迷宫生成器代码(基于深度优先搜索): ```c# using System.Collections; using System.Collections.Generic; using UnityEngine; public class MazeGenerator : MonoBehaviour { public int width, height; public GameObject wallPrefab; public float wallLength = 1; private bool[,] visited; private List<GameObject> walls = new List<GameObject>(); void Start() { visited = new bool[width, height]; GenerateMaze(0, 0); // 删除外 DestroyWall(0, height/2); DestroyWall(width/2, 0); DestroyWall(width-1, height/2); DestroyWall(width/2, height-1); } void GenerateMaze(int x, int y) { visited[x, y] = true; // 随机排序方向 List<int> directions = new List<int>() {0, 1, 2, 3}; Shuffle(directions); foreach (int direction in directions) { int nx = x, ny = y; if (direction == 0) nx += 1; else if (direction == 1) nx -= 1; else if (direction == 2) ny += 1; else if (direction == 3) ny -= 1; // 如果新的位置在范围内且未访问,拆掉两格之间的,递归生成 if (nx >= 0 && nx < width && ny >= 0 && ny < height && !visited[nx, ny]) { GameObject wall = Instantiate(wallPrefab, transform); if (direction == 0) // right { wall.transform.position = new Vector3(x*wallLength + wallLength/2, 0, y*wallLength); wall.transform.localScale = new Vector3(wallLength, wallLength*2, 1); } else if (direction == 1) // left { wall.transform.position = new Vector3(x*wallLength - wallLength/2, 0, y*wallLength); wall.transform.localScale = new Vector3(wallLength, wallLength*2, 1); } else if (direction == 2) // up { wall.transform.position = new Vector3(x*wallLength, 0, y*wallLength + wallLength/2); wall.transform.localScale = new Vector3(1, wallLength*2, wallLength); } else if (direction == 3) // down { wall.transform.position = new Vector3(x*wallLength, 0, y*wallLength - wallLength/2); wall.transform.localScale = new Vector3(1, wallLength*2, wallLength); } walls.Add(wall); GenerateMaze(nx, ny); } } } void DestroyWall(int x, int y) { walls.Remove(walls.Find(wall => wall.transform.position == new Vector3(x*wallLength, 0, y*wallLength))); Destroy(walls[walls.Count-1]); } static void Shuffle<T>(List<T> list) { for (int i = list.Count - 1; i > 0; i--) { int j = Random.Range(0, i+1); T temp = list[i]; list[i] = list[j]; list[j] = temp; } } } ``` 在 Unity 中使用此代码创建一个空 GameObject,并为其添加 MazeGenerator 脚本,调整其参数以更改迷宫大小和体长度。生成的迷宫将自动删除四个外侧,并生成 Unity GameObjects 表示每一堵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加菲猫的VFP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值