2014-09-01 2 views
0

Посмотрел на многие темы про гибкое развитие, я также огромный поклонник Clean Code, но следующий код дает мне крипы. Это выглядит следующим образом:Agile-wise - что является лучшим способом изменить похожий код (частный класс)

Класс A:

public class A{ 
    private B = new B(); 
} 

Класс B:

private class B{ 
    private ArrayStore aS; 
    //other private fields 

    private Constructor(){ 
     as = new ArrayStore(); 
     //initializing other private fields 
    } 

    private void someMethod(ObjectX obj){ 
     //some code 
     aS.delete(obj); 
    } 
} 

мне нужно добавить дополнительное заявление, что as.delete() следует называть только если что-то особенное происходит. Также не хотел делать if, чтобы не сделать код сложнее. Чем проще код, тем лучше. Так я думал об этих решениях:

  1. С классом B нарушает открытый близко принцип, я сделаю его поле и методы защиты и переопределить этот метод в новом классе затем использовать его в классе А.

  2. обращу дополнительное поле внутри класса ObjectX, который подскажет, когда она должна быть удалена, а когда не следует затем изменить метод класса B вызвать дополнительный метод (который будет проверять объекты недвижимости, то подумайте о его исключении)

Любые советы от y о, ребята? Я хочу сказать, что хочу знать, что делать в ситуациях, подобных этому, когда я хочу переопределить код (который является приватным) и как сделать его привлекательным.

Заранее благодарен!

+1

@ Edi G. Большое спасибо за то, что код выглядел более привлекательным - ваше редактирование пронизывает! :) – GoMati

+1

Возможно, вам лучше [Обзор кода] (codereview.stackexchange.com). В этом нет ничего подвижного. Agile - это организация вашей работы, она ничего не говорит о стиле кодирования, кроме того факта, что команда должна определять свои собственные правила (что вполне может быть «неважно»). – nvoigt

+0

@nvoigt спасибо за ваш совет, кажется, я бы лучше опубликовал его там. Могу ли я как-то переместить вопрос? Извините за вопрос :-) – GoMati

ответ

1

Мне нужно добавить дополнительную инструкцию, что as.delete() следует называть , только если что-то происходит. Также не хотелось делать, если не , чтобы сделать код более сложным. Чем проще код, тем лучше.

Я предполагаю, что я не согласен, что if делает код слишком сложным и будет идти на следующий подход:

private void someMethod(ObjectX obj){ 
    //some code 
    if (aNameThatDescribesTheUseCaseWhenToDelete()) { 
     aS.delete(obj); 
    } 
} 

private boolean aNameThatDescribesTheUseCaseWhenToDelete() { 
    // logic to figure out whether delete is okay or not 
} 

Я думаю, что это так Kissy, как он получает.

Если логика, чтобы выяснить, когда удалить слишком сложно, вы можете рассматривать правила/предикаты, но это, вероятно, будущие вещи.

+0

Спасибо за ответ jan! Я тоже считаю, что это хороший подход и заслуживает внимания. Тем не менее у него есть две проблемы: он изменяет существующую реализацию и добавляет немного сложности, добавляя, если (будь то в функции или создается новая). Тем не менее, это, наверное, очень просто, что приятно :) – GoMati