前言

最近自己开始尝试用cpp写一个五子棋的界面,界面部分是winapi+gdiplu实现的。
winapi主要的是C代码,然后自己实现几个类,封装一些画图函数。

但是在写代码的过程中,发现很多问题:
比如说自己想要一种很简洁的代码,不需要许多判断语句,或者少一些全局变量。
可能是我经验太少,经常发生的事情是本来通过看起来比较笨的方法写好了。
但是隔几天再看,或者要加入什么新功能时,为了让代码更简洁,又把之前写好的东西删掉,
然后再按自己理想的样子写代码。于是就在写了删,删了写的过程中循环。

还有就是,自己写代码不喜欢注释。然后过几天再看的时候,又是另外一个感觉。
注释嘛,有时候确实懒得注释,觉得自己写的代码,怎么会需要注释呢!
然后就是自己盲目自大,觉得自己代码写得很NB,不需要注释。
我只能默默的不说话(too young)。

我想了一些自己的情况,可能是自己经验太少,不会写文档,写代码之前没有设计好各种类,
最后导致添加新功能会有一种无从下手的感觉。

Too young, too simple, sometimes naive.

感想

我在怀疑为什么会再知乎上面看到有人吐槽为什么会有人写出怎么烂的代码。
起初,我的感觉是那些写出烂代码的人一定是xxx,自己肯定不会的。
但是事实是,没有做过项目,没有维护过项目,自己确实没有发语权。
更何况自己写的代码,写着写着就觉得真的是a pile of shit。
我还能说什么呢?

回到原来问题,之前五子棋是用easyx库实习的图形界面,就是写到一半感觉写不下去才跑去学winapi编程,
自己对cpp的学习恐怕没有入门,就了解到cpp类的写法。然后开始尝试,面向“对象”编程,我尝试将一些对象抽象,
比如说Player类为基类,然后再派生出Player和AI,它们作为游戏的玩家,实现下棋函数。再将数据和绘图分开,
于是我又设计MAP和UI_BOARD这个两个类,分别代表下棋的状态,和游戏界面的绘图。
我觉得我的想法很好,但是具体操作起来就会遇到很多问题,比如如何再类里面实现玩家的反馈,又如我想添加新功能时就好感觉棘手,还有就是AI思考的时候比较耗时间,如果再绘图线程里面调用会让界面卡顿,造成不好的用户体验等等。

看文档

看文档,是编程的很重要的一个环节(个人理解)。毕竟,自己许多api不知道,需要实现的效果那些api可以实现,以及使用哪一个api实现效果更好,这些都是问题。但是,遇到这些问题时,我往往不是选择去看文档,还是使用搜索引擎,这本来没有错。但时错在,意味的只用搜索引擎的结果来解决问题,没有去看文档去理解这个函数做了什么,以及为什么这样写可以实现我想要的效果。更多时候,是一种复制粘贴式的写话(面向google编程)。此外,搜索引擎的结果大多数是许多人重复对某一个文章的引用,真正有用的信息很少,而且花费大量时间去鉴别这些信息的时候就相当于浪费了许多时间。于是更好的做法是通过引擎找到自己想要的信息,让后再去官方手册去进一步的理解所需信息。这样写出来代码理解更深刻,顺便学习新的知识。

但是看文档的一个困难就是语言的障碍,我发现许多文档并没有中文,于是英语就显得很重要了。还有就是看文档会有一种浮躁的感觉,心想我发了这么多事情看你这些示例,却没有找到我想要的信息,或者说文档内容太多了。不知道从何看起,或者自己急于实现某种功能,没有时间看文档。

我想,自己应该乃得住性子,不要浮躁,沉下心来,完成自己的事情。(可能会很难,或者是废话)

期待

其实我想实现的功能还有很多,但是考虑到自己能力,我觉得还是去掉一些花俏的功能,保留核心即可。

希望,尽快把坑填上去。

以上,都是自己胡思乱语。

Last modification:January 20th, 2020 at 08:01 pm
要饭啦~