swo*_*ish 2 .net c# coding-style hashtable
在我的项目中,这是一种tcp服务器,我需要跟踪在全局范围内使用的很多对象.我沉迷于哈希表,目前我在我的项目中使用了10个哈希表,它将存储不同类型的对象.
我的问题是,这没关系吗?我知道它是一个非常庞大的数据结构但它使我的工作变得非常容易,而不是去寻找其他替代方案.例如,我有许多文本框,我需要跟踪.所以我把它们全部放在一个哈希表中并按照我喜欢的方式使用它们.
在处理大型多线程应用程序时,这种方法是否是可接受且正常的编程方法.
从您的示例中不清楚,但听起来好像您正在使用全局哈希映射从程序中的任何位置访问您需要的对象(例如界面中的文本框).
a)像这样的全局访问不是好的做法,对于接口对象更是如此.那些只能从前端模块访问,你的TCP服务器后端不关心那些.
b)在"功能组"中安排对象的正确方法是使用适当的类,而不是5-10个哈希图.为什么,在实践中?考虑这两种方法(在pythonlike pseduo代码中):
# Interface is a hash-map of interface objects, like text-boxes. 'status' is the key
# in the map for one of those.
Interface['status'].setText("New status!")
# vs:
# Interface is a proper object with its own class, that handles the interface. It has
# all our text-boxes "inside" of it.
Interface.updateStatus("New status!")
Run Code Online (Sandbox Code Playgroud)
现在,假设您改变主意并希望将状态表示为绘图,而不是文本框.使用第二种方法很简单:您只需相应地调整GUI,并更改updateStatus方法的行为方式!
使用第一种方法,您现在对一个不再存在的文本框进行hahsmap访问,将其遍布整个代码.
这是一种比通常的哈希映射或全局对象更普遍的做法 - 它是关于使用具有明确定义的接口的对象,并且可以在内部进行更改而不会影响程序的其余部分.