其实问题很简单,举个例子,比如你在写一个DAL层函数时,定义了一个string sql。此时是将其定义在函数内部作为局部变量,还是定义在class下作为全局变量(甚至是重新定义一个class专门放SQL)。将其作为局部变量的好处是,调用函数的时候,变量才进栈,用完就释放,并且每个函数下的SQL都清晰明了。另一种说法是,局部变量每次调用函数都要进栈,对内存管理资源来说是一种浪费,并且这种浪费大于不释放内存的消耗,甚至每次调用初始化都存在内存泄漏的风险。问题很简单,甚至可能两种方法并没有啥质的区别,但还想请教各位大佬给点建议和说明(问题前提:调用此方法的函数个位数,但是程序访问很频繁。SQL的字符串全部加起来占的内存也很小。)
你看SqlCommand,就是让你传递sql。
从代码可读性考虑,定义在函数里比较好。另外,如果你学习了EF之类的orm框架,你会发现,你在代码里看不到sql了。
我意思是,肯定作为方法参数好啊。
人家使用方法时,就知道这个字段是要传sql的。
而不是要到类的内部,去找到这个变量,然后赋值。
你换一个人交接后,第二个人上来,一输入这个方法,根据方法的参数注释就明白了。
但是写在类里,人家是不会明白的,只能看文档,“哦,原来要给类里的这个sql变量赋值啊。坑爹了。”
第二,如果你是想从设计的角度来说,那么还是要放在函数内部的。定义在函数外部,意义上来说就是外部或公共变量,这个变量意义上来说是任何函数都可以用的。这肯定是不对的,就意义上来说你这个sql变量仅仅是特定的给某几个函数用的。而且起码如果我看这样的代码我会很火大,因为翻来翻去很烦。可读性也是很重要的。
综上,无论如何都是要放在函数内部的。