真Unity3d_到底要怎么开始学

本来真心不想吐槽什么。

但是我看到下面的代码,看出很多不寻常的问题

一开始看还不错,字写的很工整,排列不错,但仔细分析一下,这就是一份典型的对的代码,但是写的很不好,就是网上说的代码的“臭味道”,咸鸭蛋味。

/**
	* path:读取文件的路径
	* name:读取文件的名称
	*/
	ArrayList LoadFile(string path,string name)
	{
		//使用流的形式读取
		StreamReader sr =null;
		try{
			sr = File.OpenText(path+"//"+ name);
		}catch(Exception e)
		{
		//路径与名称未找到文件则直接返回空
			return null;
		}
		string line;
		ArrayList arrlist = new ArrayList();
		while ((line = sr.ReadLine()) != null)
		{
			//一行一行的读取
			//将每一行的内容存入数组链表容器中
			arrlist.Add(line);
		}
		//关闭流
		sr.Close();
		//销毁流
		sr.Dispose();
		//将数组链表容器返回
		return arrlist;
	}  

(用arraylist输出返回文件每行字串, 用path,name2个参数输入)



看完上面代码,我感觉就是刚学C# 1~2年的人写的,而且他的程序猿功底,完全不行,就是如果我是某易,某讯公司的组长给这个实习生做评语,应该也是中下,KPI应该也是不合格

但是,重点是这是一个unity3d界里面很出名的博主所写的代码,很多很多粉丝,估计不少粉丝直接COPY这份代码,该博主还是什么unity3d中文区召集人,还出过unity3d书的哦,各种头衔,也在一些游戏公司里面做相当一段长时间

当然你可以说他是初学,几年前写的,但我确实也不见这几年他的逻辑思维有什么实质提高

现在这位博主甚至很少POST,代码示例了,就算发表也是一般般而已

我最近在博客里面问他对mac系统和windows系统有什么看法(unity3d起源是用mac系统的一群美工想做),而他甚至对unity3d的起源和未来发展一无所知,也不会做半点设想,


但是看到这里,你应该懂了吧,,,,,,游戏做的好坏和程序猿 没关系,和你的专业没关系,也和你本身的综合水平没什么关系

我并不是说大牛就没有生病的时候,就一定能写百分百完美的代码

重要的是大牛一般比较负责任,能写逻辑完善,框架宏大的源码,这就是传统IT和游戏程序的区别了

这也是我相信的这样出产的程序才有比较好的未来

有时候优势或者同时是劣势,经验太多,反而限制了你的想象,游戏界反而是乱来的程序猿才能生存下来

但确确实实这个博主,这份代码只是很普通的代码而已


在现在这个移动互联网时代,以讹传讹会以更快的速度,更看不清的面貌呈现出来

经过信息大爆炸的年代,其实人还真没学聪明,更不用说以后要和AI战斗了

这是我认为人类必败的原因之一

反正做游戏,随大流就对了

反正国内游戏界就是这样,就是要做,不要学,你能混进一个游戏公司,然后随便写写博客,再赶上该工具流行的时候,你就能成功


看完上面,而你是不是还觉得你一开始要跟着这样的博主学习??

就是你看到的网上的一大堆资讯,有些还评价很高的,其实坦白说一文不值

我想随便一个几年C#经验的人也有更好的输入和输出参数,抽象,逻辑也会更好

也请不要看我的博文去学习,因为思维有些太跳,不过我说一通,若能引起你思考,帮助到你,你觉得好,并分享开来,也算是有做到一些贡献

生命不息,思考不止


z最后,我加一些备注吧,感觉好像在给小学生改作业,很久没看到那么烂的抽象思维了,但程序界就是到处都是,当然40%的游戏还有精品游戏,流出的游戏代码你看看就知道就都是还不错,失败是偶尔会失败,一不小心就滑铁卢,行军中的一个决策错的就可能全军覆没,所以失败是有偶然,但成功没有偶然

/**
	* path:读取文件的路径
	* name:读取文件的名称
	*/
	ArrayList LoadFile(string path,string name)
	{//**path,name,是不是还要extension? 方法参数可以重写一个LoadFile(path)即可,字串处理在C#里,有Path.GetFileName,可以做方法组合,而不需要都封装在这个方法里,这样的函数,真的写的很差,从命名就看出来了
		//使用流的形式读取
		StreamReader sr =null;
		try{//**请思考一下,只要你学过linux,是不是就是path + // + 这样2个斜杠就能跨平台?android可是linux来的哦,其他平台捏,本身c# system.io还做的不多,起码看上去有跨平台的想法,不是2017年,system.io是2005年就是现在这个样子的了,还是不错的说,只是我们这些程序猿用烂了,人家本来框架是好好的跨平台的
			sr = File.OpenText(path+"//"+ name); //**前面说了,前面方法调用前就甚至可以用path这个C#类做有效性处理,这里还try catch,还返回null,看上去很美,return null也很潇洒,但实际上这样硬封装的函数很难用,每次调用这个函数都是不安全的,还要外面再判断一次是不是null
		}catch(Exception e)
		{
		//路径与名称未找到文件则直接返回空
			return null;
		}
		string line;
		ArrayList arrlist = new ArrayList();
		while ((line = sr.ReadLine()) != null)
		{
			//一行一行的读取
			//将每一行的内容存入数组链表容器中
			arrlist.Add(line);//**请问arraylist是链表的意思么?
		}
		//关闭流
		sr.Close();
		//销毁流
		sr.Dispose();
		//将数组链表容器返回
		return arrlist;
	}  

(当然以上问题都可以多写程序就可以得到改善,就好像多做菜,就不会忘了放盐,不会过火了)



*本来C# framework的跨平台(微软建议你在WINDOWS上开发,也限制你,可实际上现在不跨平台不行也),MONODEVEOP的开源,活生生的就给这个博主,写成了一份普通代码,虽然是很简单的一个逻辑,这个博主可能收入不错,也确实是真心分享,但不可否认这就是一份典型的有问题的代码,确实值得拿出来学习

最近我才在重新做一点电子电路的东西,记得那时候我们的作品是还不错能通电的,老师老说挑剔我们这个焊石不是太厚就太薄,现在做的手机的微电路全部机器人做根本不可能人工焊,我们工作中也用不到,但那种治学精神,确实值得传承,如果当年老师不是以一种挑剔的口气,我们或者更能接受,更有成就

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

avi9111

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

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

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

打赏作者

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

抵扣说明:

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

余额充值