encapsulation

    70热度

    21回答

    我有一个项目,我们经常在其中使用Integer.parseInt()将字符串转换为int。出现问题时(例如,String不是数字,而是字母a,或其他),此方法将引发异常。但是,如果我必须在任何地方处理我的代码中的异常,那么这很快就会变得非常难看。我想把它放在一个方法中,但是,我不知道如何返回一个干净的值来显示转换出错。 在C++中,我可以创建一个方法接受指向int的指针,并让方法本身返回true或

    3热度

    7回答

    我的一个类有一个包含Set的字段。该字段只填充到构造函数中,然后由其他类读取。本来我有这样的事情: public class Foo { public final Set<String> myItems; public Foo(Collection<String> theirItems) { this.myItems = new LinkedHashSet<Stri

    5热度

    5回答

    我必须处理大约20个POST参数,我不知道该在哪里做。 我可以将每个定义为模型上方法的参数,并在调用该方法时从控制器传递它们。这会导致相当多的工作,并且由于参数的数量而使函数调用的可读性降低。 或者我可以调用模型上的方法,并直接访问参数。 将参数作为参数传递会让我更好地控制函数访问哪些参数,并且文档更易于理解。但是如果稍后添加新参数,则必须将它们添加到方法调用的末尾,因为不会打破每个现有的调用。我

    0热度

    2回答

    我想知道是否可以封装一个类的方法,但是然后暴露它们在一个消费类。例如(JFTR,我知道这个代码是错误的) class Consumer{ public function __construct($obj){ $this->obj = $obj; } public function doCommand(){ $this->obj->

    4热度

    2回答

    很多人都知道这篇文章:more on getters and setters。我认为它描绘了吸气者/定居者的邪恶一面是令人信服的工作。我还通过尝试将现有项目(未完成)转换为没有getter/setter的代码来测试它。有效。代码可读性大大提高,代码更少,我甚至设法摆脱了我最初认为他们确实需要的getter/setter。除了一个地方。 将模型导入视图部分是我认为这种方法忽略了重点的地方。在文章中,

    17热度

    3回答

    针对What is your longest-held programming assumption that turned out to be incorrect?问题,错误的假设之一是: 私有成员变量是 私有的实例,而不是 类。 (Link) 我没听清楚他在说什么,任何人都可以解释一下什么是错/右关于用一个例子?

    0热度

    6回答

    首先,我要说的是,尽管是TDD的一名相当新的从业者,但我几乎可以从中受益。我觉得我已经有足够的进步来考虑使用嘲讽,并且在了解嘲笑与OOP适合的地方时碰到了一面真正的砖墙。 我读过尽可能多的相关文章/文章,我可以找到(Fowler,Miller),我仍然不完全清楚如何或何时模拟。 让我举一个具体的例子。我的应用程序有一个服务层类(有些人称之为应用层?),其中方法大致映射到特定用例。这些类可以与持久层

    0热度

    1回答

    同时保持不可知的客户端类(用于封装的原因) public enum MyEnum implements Commands{ A{ public int method1(int varY) { return varY+2; } public MyEnum method2(){ return MyEnum.B;

    0热度

    2回答

    问题我有范围和封装的通用问题。采取两种方案: 方案1: // a global application level constant public static const IS_DEMO_MODE:Boolean = false; ... // somewhere deep in the codebase private function _myFunction():void {

    2热度

    3回答

    是否可以将python模块的'mechanize'和'BeautifulSoup'封装到一个.py文件中? 我的问题是以下几点: 我有一个python脚本,需要mechanize和BeautifulSoup。我从一个PHP页面调用它。虚拟主机服务器支持python,但没有安装模块。这就是为什么我想这样做。 对不起,如果这是一个愚蠢的问题。 编辑:谢谢你的答案。我认为这个解决方案解决了virtual