通过这个小程序让我看到了不少地方做的还是不好,下面记录一下,谨作为自己以后学习的参考。
1、抽象层次太低,思路不够清晰:
客户端线程的读写,需要单纯抽离;
各个界面缺少统一的管理,致使不少变量封装不好;
变量出现冗余情况;
统一对接收到的数据进行处理不够彻底
刚开始对程序结构不够清晰,至于后来添加功能时有点混乱
对程序的逻辑处理还不够到位,眼光还只着眼于当前,设计存在不合理的地方
2、对于费时间的处理实行多线程操作,对线程的理解还不够深入。创建线程的时机把握不够准确,线路处理的业务不够清晰
3、对于程序的统一性做的不好,例如命名格式出现混乱
4、程序模块划分不够清晰,出现不少代码冗余
5、服务器端虽然统一维护了5个数据存储结构,即使同步了更新,但却降低了服务器端的性能,代码不够精练,例如可以自己定义数据存储结构的类,继承map,然后再对外提供相应的数据访问方法,对数据维护来说更容易、方便、简洁。
6、程序的优化问题:
程序中依然有很多地方必须进行优化处理,比如服务器端的逻辑处理类,应该将公共的信息处理再进行抽离,例如一些变量的初始化、赋值、发送等都能抽离,让每个类承担独自的责任,信息的处理不够清晰。例如发送和接受的数据处理要分开,同时也不能太分散,同一类型的数据处理最好放到一块。在服务器端可以将对所有用户的操作跟对单个用户的操作分开,并提供相应的方法调用。
对于服务器来说需要更多的优化,每一行代码都应有其存在的必要性,特别是访问频率多的代码,必须要进行优化处理,包括变量的定义,对象的创建,特别是那些耗资源的对象,如输入输出流,最好使用单例模式
7、在此程序的编码方面,虽然使用了java,但更多的还是以一种面向过程的方式编写的程序,思维还没有完全转换到面向对象上,对面向对象的理解不够深入,完全没有体现出面向对象编程的优势
8、对于程序理解不够清晰、准确、透彻。没有彻底理解程序的功能,看待程序的角度,对于程序的设计方面还存在许多不合理的地方。当创建了一个对象时要想到将来谁可能用到此对象,可能会如何使用,并提供相应的方法提供服务。比如客户端创建了一个Panel,应该思考此panel里的内容,变量,功能,性能,如何获取此panel,如何取得此panel以及对其中的变量进行操作,对panel中的事件进行驱动。
9、抽象层次太低。虽然使用了Object流、Switch结构、enum数据类型,可以在一定程度上可以方便一些功能的添加,但却使得代码一直在快速膨胀,代码的复用率太低
10、参数传递要谨慎。在定义类时,构造函数参数的定义要谨慎,只定义必须使用的参数,降低对实例化该类的其他类的依赖性,降低类与类之间的耦合程度,最好可以是类独立存在,可以将此类在任何地方实例化,如果参数越多会使得能实例化该类的地方越少。最好在开始时统一进行实例化,以后只需调用此对象提供的服务即可。