看了源代码,相信大家都知道IGE的源代码出自飞尔早期泄露的源代码。

  说真的,这些混乱和不合理以及低水准的编程水平和方式不是韩国程序员的错。跟他们没有关系。

  服务端的程序尽可能减少不必要的开销,哪有什么东西都挤到一起的??

  就拿服务器启动器来说,配置项目以及开区清理这些,不应该放在主窗体上面进行处理。

  看到无尽长的代码挤在一份主执行文件里面,你的感受会如何??

  架构结构一定要合理,为什么,因为合理就等于是合理分配资源。

  为什么不应该在主窗体文件里面处理这些东西,因为我们知道,配置文件一旦生成,服务器启动后,这些东西就没有用了。

  可是它们这些超大量的控件和各种代码的开销仍然是不可避免的,然而却是浪费再浪费再再浪费的。

  这些仅仅只是一个启动器占用的资源,其它各个服务器占用的资源加在一起,值就大得多了,难怪很多GM说系统开销大。

  

  合理的做法应该是通过动态创建的方式另外创建窗体来执行这些。

  动态创建的好处是,在需要的时候创建,关闭的时候释放。

  而这些配置和清理都是在服务器启动之前进行的,所以启动后,不再影响系统的资源分配。

  而启动器只负责创建各个服务器的进程,这个是它的主要任务。需要分清楚。

  任务分清楚,功能模块要合理安排,暂时性的东西不要跟长期性的东西混在一起,关键还是那些变量的调用处理问题。

  否则代码一多,不说维护和扩展,就是查错就有得查了。

  所以不管你是采用IGE的源代码或者飞尔的源代码来开发,如果没有重新架构结构,没有清理各种混乱的代码。

  那么程序效率永远是100%低效的,并且BUG的隐患绝对存在的,哪怕你精力再好,也难以发觉这些隐患。

  那么混乱的代码,长长的抹脚布只会令人眼花头晕,想保持清醒的头脑,可能吗?

  显然,这些其实考验的不仅仅是一个人的代码理解能力,更重要的是考验一个程序员的编程架构能力。这些就是程序员的整体能力的体现。

  程序的高效跟你采用那种方式来开发没有绝对的关系,主要的是跟如何合理安排和分配资源有绝对的关系。

  这些我使用了绝对这个词,因为是肯定的。

  服务器啊服务器,它们的任务主要是处理数据和游戏逻辑,实际上,大量的资源都被这些无关的东西占用了。

  超大量的全局变量,这些是啥水平的编程水平??

  说真的,不应该出现在Delphi编程上面,因为面向对象的编程风格首先就不提倡这些做法。不属于Delphi这种严格的面向对象的编程方式。

  如果是其它语言或者是C++等,这个是值得理解的,但是Delphi,就很难令人不怀疑你的能力了。

  关于结构的东西就谈到这里,相信大家会明白怎么样去合理安排自己的代码结构。

  只多说一句:

  服务器编程,或者说Delphi游戏编程最好——尽量不要采用桌面程序编写的方式来进行。

  因为你需要把系统的资源交给最需要的绘图引擎和服务器数据和逻辑处理上面。

  尤其是以后的功能扩展所需要的资源开销,而不是浪费在无关的控件上面。

转载于:https://www.cnblogs.com/GameDelphi/archive/2012/08/13/2635674.html

探讨【IGE】的源代码【三】。相关推荐

  1. java jsp 获得网页源代码三种方式

    一.GetURL.java import java.io.*; import java.net.*; public class GetURL {public static void main(Stri ...

  2. Android闹钟动画,学习Android闹钟源代码(三)-AlarmClock类分析(part1)

    android的时钟,也就是闹钟应用,从桌面的widget直接点进去的会打开AlarmClock这个Activity. 好像我平常都不上图的,今天就上两张图先. 一张是应用界面图如下:(改天再上传了, ...

  3. live555学习之基本类介绍及计划任务深度探讨

    liveMedia项目的源代码包括四个基本的库,各种测试代码以及Media Server.四个基本的库分别是: UsageEnvironment&TaskScheduler, groupsoc ...

  4. 关于Vue ssr的一点探讨

    这很难,里面只是我以比较明显的一个问题,引发对整个ssr的研究.但是我又复习了下Vuex,发现了异步问题.过两天把router也复习了.那异步问题应该就解决了,到时候再出篇稿子.这篇,你可能看不懂,因 ...

  5. 第十六章 网络通信协议探讨

                               第十六章    网络通信协议探讨      LINUX的源代码中属于网络的就有近38万行:我必须先花时间彻底解决网络编程问题,再论其它:所以.其它 ...

  6. 7的整除特征 三位一截_小学生三位数加法的策略与表现

    题目:小学生三位数加法的策略与表现 来源:Educ Stud Math (2016) 91:123–139 DOI 10.1007/s10649-015-9658-3 目的:探讨学生在解决三位数心算问 ...

  7. 三容水箱液位控制系统_三容水箱液位控制系统的建模及仿真.doc

    WORD 格式 整理 学习 参考 资料 分享 WORD 格式 整理 学习 参考 资料 分享 过程控制课程设计 三容水箱液位控制系统的建模与仿真 专 业:自动化 班 级: 组员: 指导老师: 重庆大学自 ...

  8. C#生成CHM文件(应用篇)之代码库编辑器(5)【总结、程序、源代码】

    经历了快一个月的开发(因为都是在闲暇时间做的,实际实际可能不到一周),AlexisEditor总算完成了. 这边说明一下为什么有些网友不能新增文章的问题. 原因是路径中有中文字符,我一直用的是英文系统 ...

  9. 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ③ ( 创建工程目录 | 添加 C++ 源代码 | 代码自动提示 )

    文章目录 一.创建工程目录 二.添加 C++ 源代码 三.代码自动提示 可以参考官方提供的文档 : https://code.visualstudio.com/docs/cpp/config-linu ...

  10. 2017GAITC丨尖峰对话:AI的第三次寒冬会不会到来?

    人工智能的概念自1956年在美国达特茅斯会议(Dartmouth Conferences)上被明确提出后,至今已经走过了61年的发展历程.我们站在2017年这个时间点,看到的是人工智能在创投圈的火热, ...

最新文章

  1. 开启Windows7多用户远程桌面
  2. 树复制替换id_程序员的进阶课-架构师之路(12)-2-3-4树
  3. catia v5法矢数据软件_catia介绍
  4. 用html编写输出今天是星期几,利用Date对象编写程序,判断并输出今天是开学的第几周,星期几。...
  5. python自动化工具哪个好用_微软最强 Python 自动化工具开源了!不用写一行代码!...
  6. 机器学习 —— 浅谈贝叶斯和MCMC
  7. c++string函数(一)——find、rfind详细用法
  8. resnet 50 网络分析
  9. 控制上网!!!(版本之1.1) 当前时间从网络取得。
  10. 关于修改esp8266波特率sscom32串口调试窗口没反应解决方案
  11. BA无标度网络的仿真实现
  12. QT绘制实时动态曲线——qcustomplot使用(一)
  13. Serialization和Deserialization
  14. APS生产计划排产在装备制造业的应用
  15. swiper网格布局
  16. EasyExcel自定义表头
  17. mysql输出当前是第几周使用week和weekofyear的区别
  18. Django--request 对象
  19. 真正的帅哥没人说帅_男生长得帅的标准五官 教你判断谁才是真正的帅哥
  20. 【路径规划】基于头脑风暴优化算法求解带时间窗和同时取送货的车辆路径问题附matlab代码

热门文章

  1. 数据结构最短路径例题_数据结构(五)图---最短路径(迪杰斯特拉算法)
  2. c++ byte指针长度_valgrind诊断C/C++内存泄漏
  3. eclipse java项目目录结构_最全的 eclipse web 项目目录结构以及Tomcat的各个目录的作用...
  4. Mac没有winnt格式_Mac视频格式转换工具-H265 Converter Pro
  5. System与Runtime类
  6. 程序设计基础基于C语言(第二版),程序设计基础_基于C语言(第2版)__课后习题参考答案.doc...
  7. 动态规划实战16 leetcode-198. House Robber
  8. python类的构造函数self_初学python class 注意构造函数__init__(self) | 学步园
  9. Django实现websocket完成实时通讯,聊天室,在线客服等
  10. 相同数据源情况下,使用Kafka实时消费数据 vs 离线环境下全部落表后处理数据,结果存在差异...