相关疑难解决方法(0)

HTML解析类的构造函数应该做多少工作?

对象构造函数做多少工作是合理的?它应该只是初始化字段而不是实际对数据执行任何操作,还是可以让它执行某些分析?

背景: 我正在编写一个类,负责解析HTML页面并根据解析的信息返回各种信息.类的设计使得类的构造函数执行解析,如果发生错误则抛出异常.初始化实例后,解析后的值无需通过访问器进行进一步处理即可使用.就像是:

public class Parser {

    public Parser(final String html) throws ParsingException {
        /* Parsing logic that sets private fields */
        /* that throws an error if something is erroneous.*/
    }

    public int getNumOfWhatevers() { return private field; }
    public String getOtherValue()  { return other private field; }
}
Run Code Online (Sandbox Code Playgroud)

在设计课程后,我开始怀疑这是否是正确的OO练习.解析代码是否应放在void parseHtml()方法中,并且一旦调用此方法,访问者只返回有效值?我觉得好像我的实现是正确的,但我不禁觉得有些OO纯粹主义者可能因为某种原因发现它不正确,并且以下的实现会更好:

public class Parser {

    public Parser(final String html) {
        /* Remember html for later parsing. */
    }

    public void parseHtml() throws ParsingException { 
        /* Parsing logic …
Run Code Online (Sandbox Code Playgroud)

language-agnostic oop constructor

33
推荐指数
4
解决办法
3372
查看次数

我应该在构造函数中抛出异常吗

如果我有一个三角形类,如下所示:

export default class Triangle {

    sides: number[]

    constructor(...sides: number[]) {
        this.sides = sides
    }

    kind() {
        // returns type of triangle
    {
}
Run Code Online (Sandbox Code Playgroud)

如果传入构造函数的边没有创建真正的三角形,那么在创建类时(例如在构造函数中)还是在调用函数时抛出错误更好?

这个答案,它说在 Java 中没问题,我确定它在 TypeScript 中有效。我只是想知道是否有关于 OOP 和 TypeScript 的“最佳实践”。

oop typescript

4
推荐指数
1
解决办法
1893
查看次数

标签 统计

oop ×2

constructor ×1

language-agnostic ×1

typescript ×1