vindi / vindi-magento

Módulo de cobrança recorrente para Magento
https://www.vindi.com.br
GNU General Public License v3.0
12 stars 14 forks source link

Alteração da visibilidade das variáveis e métodos de private para protected #112

Closed lfluvisotto closed 5 years ago

lfluvisotto commented 5 years ago

Motivação

Segue meus apontamentos:

Estou atendendo um cliente que utiliza este módulo de subscription da vindi para magento 1.

O cenário é o seguinte, o cliente possui uma regra de negócio específica que precisa realizar um override na seguinte class e method:

class > app/code/community/Vindi/Subscription/Model/Observer.php

method > validateAdminHtmlOrder

Ou seja:

class Cliente_VindiSubscription_Model_Observer extends Vindi_Subscription_Model_Observer

method validateAdminHtmlOrder chama o method $this->countSubscriptions($quote) que chama $this->isSubscription($product) que possuem visibilidade private, o que gera erro, pois uma class inherited não consegue chamar método private do pai, somente se for protected.

Ou seja,

Tenho que alterar também a visibilidade do method countSubscriptions e isSubscription de private para protected somente para não gerar o erro.

Deparamos com o seguinte dilema, qual é a melhor prática method private ou protected?

Este artigo http://carlosschults.net/en/are-private-methods-a-code-smell/ segue meu pensamento sobre o assunto.

Minha conclusão é a seguinte:

Este módulo de subscription da vindi para magento 1 atende muitos clientes, todo desenvolvimento do módulo é para atender uma loja default magento, propósito geral, sem regras de negócios do cliente envolvidas com o módulo, porém meu cenário mostra que clientes podem adicionar novas regras de negócio ao módulo, neste caso eu recomendo manter as variáveis e métodos ao invés de private como protected, uma vez que é um repositório público e possibilite o cliente customizar regra de negócios sobre o módulo sem causar problemas com visilidade de variáveis e métodos como private.

Espero ter sido claro com a minha explanação, podemos discutir melhor nos comentários do pull request.

Solução Proposta

Alteração da visibilidade das variáveis e métodos de private para protected

laerte-guimaraes commented 5 years ago

@lfluvisotto muito obrigado pela sugestão :smiley: :tada: Estamos analisando as implementações e o quanto antes possível estaremos retornando :handshake: