my preferences are to break multiple complicate multiline if statements into a small protected method that explains the test.. like

```
protected function shouldChangeSubSite($record, $owner) {
    if(!Config::inst()->get($this->owner->class, 'subsite_change_with_model') ( {
        return false;
    }
    // and so on.
}
````

It's easier to read the code and the if statement gets a name that expresses the evaluation. Plus there is a benefit that the if elseif else can be more easily unit testing (if made public at least).