Questions tagged «scope»

9
在变量作用域(全局是全局的)之前,程序员做了什么?
因此,我不得不处理看似古老的语言(称为PowerOn),在这里我有一个主要方法,一些用变量定义变量的数据类型,并且具有不返回类型的子过程(本质上是无效方法)的能力也不接受任何争论。 这里的问题是,一切都是全球性的。 我已经读过这些类型的语言,但是大多数书都带有这样的方式:“好吧,我们过去常常用马和马来骑,但是现在,这是一辆汽车,所以让我们学习如何使用THAT!” 那些日子,我们将永远不会重生。”我必须承认,思想正在努力思考范围和范围之外的问题。 好吧,我在这里。我试图弄清楚如何最好地管理几种开放方法中的全局变量。是的,即使是for循环的迭代器也必须全局定义,我发现自己在代码的不同部分进行了回收。 我的问题:对于那些有这种类型经验的人,程序员如何在全球竞争环境中处理大量变量? 我感觉这只是一个心理杂耍技巧,但是我想知道是否有任何已知的方法。
40 scope 

7
创建块只是为了减小变量的范围是否有意义?
我正在用Java编写程序,有一次我需要为密钥库加载密码。只是为了好玩,我尝试通过执行以下操作使密码尽可能短: //Some code .... KeyManagerFactory keyManager = KeyManagerFactory.getInstance("SunX509"); Keystore keyStore = KeyStore.getInstance("JKS"); { char[] password = getPassword(); keyStore.load(new FileInputStream(keyStoreLocation), password); keyManager.init(keyStore, password); } ... //Some more code 现在,在这种情况下,我知道这有点愚蠢。我还可以做很多其他事情,其中​​大多数实际上更好(我根本不能使用变量)。 但是,我很好奇在某些情况下这样做不是那么愚蠢。我唯一想到的另一件事是,如果您想重用通用变量名,如count或temp,但是良好的命名约定和简短的方法使其不太可能有用。 在某种情况下,仅使用块来减小变量范围有意义吗?
38 java  variables  scope 

4
为什么要接住捕捉,必须使用方括号?
您可以使用多种语言(至少需要Java,也可以考虑使用C#吗?) if( condition ) singleStatement; while( condition ) singleStatement; for( var; condition; increment ) singleStatement; 因此,当我只有一条语句时,不需要使用添加新的作用域{ }。为什么我不能通过try-catch做到这一点? try singleStatement; catch(Exception e) singleStatement; 关于try-catch是否有一些特别之处,需要始终拥有新的作用域或其他内容?如果是这样,编译器无法解决该问题吗?

8
“变量应尽可能地处于最小范围内”是否包括“变量应尽可能不存在”的情况?
根据有关“ 原理变量比实例变量更喜欢局部变量? ” 的公认答案,变量应处于尽可能小的范围内。 将问题简化为我的解释,这意味着我们应该重构这种代码: public class Main { private A a; private B b; public ABResult getResult() { getA(); getB(); return ABFactory.mix(a, b); } private getA() { a = SomeFactory.getA(); } private getB() { b = SomeFactory.getB(); } } 变成这样的东西: public class Main { public ABResult getResult() { A …


4
如何确定项目所需的程序员数量
您如何知道一个特定项目需要多少个程序员才能成功? 我所服务的公司为客户公司履行订单。我们编写了一个内部仓库管理系统,该系统处理基于位置的库存管理,订单处理,提货单生成,开发票,货运审核和报告(可能有50个报告)。它还具有条形码扫描功能和客户端门户以及许多其他较小的功能。它还包括一个完整的员工时钟。它与Quickbooks,UPS和FedEx集成。它处理至少50个客户端的工作,这些客户端的功能略有不同。例如,我们从客户发送的文件中导入订单,但是每个客户发送不同的文件格式(csv,excel,平面文件和Web服务),因此我们有十几种订单转换方法设置。出口是同一回事。 该项目非常复杂,并且每天都有超过25万行代码的代码在不断增加。这大约是250,000行VB.NET代码,6,200行Ruby代码以及大约5,000行PHP。它还具有一个包含约200个表的MySQL数据库。 由于需求的不断变化和数十个客户的不同需求,代码本身的质量从极差的代码到相对较好的代码都有很大的不同。 当前,该项目只有一个程序员-我自己。我目前还为75人左右的公司提供所有产品支持。这包括故障排除和设置新客户端以及所需的任何新功能。另外,我们正在尝试将整个内容重写为100%基于Ruby on Rails。我们希望在明年左右将整个系统推向市场,以供其他公司使用。 目前,我们只有一名程序员,但我认为这还不够。对于这个规模的项目应该有多少个程序员,或者我们应该如何确定该问题的答案,没有人有任何建议吗?特别是考虑到管理层希望产品在明年之前达到商业质量?

3
您如何安全地重构具有动态范围的语言?
对于那些有幸不使用动态范围内的语言的人,让我稍微介绍一下它的工作原理。想象一下一种伪语言,称为“ RUBELLA”,其行为如下: function foo() { print(x); // not defined locally => uses whatever value `x` has in the calling context y = "tetanus"; } function bar() { x = "measles"; foo(); print(y); // not defined locally, but set by the call to `foo()` } bar(); // prints "measles" followed by …

5
您是否应该重构专注于新功能的项目中未破坏的现有代码?
给定一个旨在为应用程序添加新功能的小型项目,所引入的更改涉及一些现有代码,涉及在某些领域中进行更新。在实施期间,我发现其中一些更新的代码具有重构的候选对象。 这是否是一个适当的重构时间,从而又需要对受影响的那些组件进行回归测试(因此可能引入的范围最初不是项目的一部分)?还是我应该推迟,完成功能,也许有一个单独的项目进行重构(尽管我有点犹豫,因为业务用户可能不会完全赞助一个不添加任何功能的项目,除非他们重视代码的可维护性...)?

5
Java包级别作用域有用吗?
我了解包范围的概念,有时甚至认为我想要它。但是,每次我认真地尝试使用它时,我发现它都不符合我认为可以满足的需求。 我的主要问题始终似乎是,我希望限制范围的东西从来不在同一包中。它们可能在概念上全部链接在一起,但是应用程序中数据的逻辑划分将它们作为较大包的单独子包。 例如,我可能有一个Mission模型,并且我只希望其他Mission工具(例如我的missionServices)使用某些方法。但是,我最终将Missions.models和Missions.services作为我的包,所以MissionModel和MissionService不在同一包范围内。似乎从来没有出现过这样的情况:程序包适当地包含了我希望具有提升的权限的内容,却又不包含我不希望拥有这些权限的许多内容;我几乎没有感觉到包范围界定方法的优势证明修改我的项目体系结构以将所有内容都放在同一包中是合理的。通常,无论是Aspect还是某种形式的控制反转,都是解决我简要考虑过的程序包作用域的任何问题的更好方法。 我很好奇,这在所有Java开发人员中通常被认为是正确的,或者只是我所做的工作的fl幸。封装范围在现实世界中使用率很高吗?在很多情况下,它被认为是很好的使用形式,还是在大多数情况下,它被视为遗留行为而很少被开发利用? 我没有问任何关于为什么包私有作用域是默认值的问题,我在问什么时候应该使用它而不考虑默认值。关于为什么默认为默认值的大多数讨论并没有真正进入包范围实际有用的时间,而只是在争论为什么不应该将其他两个常用范围设为默认值,从而使包在消除过程中获胜。另外,我的问题是关于当前的发展状况。具体来说,我们是否已经开发到其他工具和范例使得程序包作用域不那么有用的地步,而当它成为默认值的决定才有意义时。
11 java  scope 

4
函数中内部作用域块的使用是否不好?
在某些(非常罕见)的情况下,存在以下风险: 重用不打算重用的变量(请参见示例1), 或使用一个变量代替另一个在语义上接近的变量(请参见示例2)。 范例1: var data = this.InitializeData(); if (this.IsConsistent(data, this.state)) { this.ETL.Process(data); // Alters original data in a way it couldn't be used any longer. } // ... foreach (var flow in data.Flows) { // This shouldn't happen: given that ETL possibly altered the contents of `data`, it is …


5
如何使从外部访问函数显而易见?
这是一个特定于C的问题。我试图将所有可能的内容都保留在翻译单元的边界之内,仅通过.h文件公开一些功能。也就是说,我正在static链接到文件级对象。 现在,其他模块需要调用几个函数,而不是直接调用。我的模块/文件/翻译单元订阅其他模块,将指针传递给函数。然后,在发生特定事件时,将使用一些参数来调用指针。 因此,我想知道如何使这些功能从某个晦涩难懂的位置调用变得非常明显。 它们应该是static还是extern(并将它们显示在中.h)? 我应该在函数名称中包含一些提示吗? 还是发表一个“由X调用”的评论就足够了?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.