Magento 2.3 usage of object manager in abstract code – good / bad / indifferent

I know what object manager is. I know why it is used. I know that as a general rule it shouldn’t be used. I know why from reading this.

Then I see code like this

public function __construct(
    $this->scopeConfig = $scopeConfig ?: ObjectManager::getInstance()->get(

Which seams like an elegant way of doing it. Especially in something so abstract. So my questions are this:

  • a) Is the above still considered bad practice?

  • b) In this purely to maintain backward compatibility? Or is there another reason?