powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Исключительные ситуации
11 сообщений из 11, страница 1 из 1
Исключительные ситуации
    #40072289
daniel43
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы услышать мнение по поводу кода и получить совет по исправлению исключительных ситуаций.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
public interface StoreFunc {
    void getIn (int gi); //вход в магазин
    void buyProds (int bp); //приобретение товаров
    void setState (int s); //изменение статуса кассира/магазина
    void show();
}
 
class Cashier {
    String badge; //бейдж, указывающий имя кассира
    int state; //состояние кассира (1 – за кассой, 0 – не на рабочем месте)
    Cashier (String bd) {
        this.badge = bd;
        this.state = 0; 
    }
    public String getBadge() {
        return badge;
    }
    public void setBadge(String badge) {
        this.badge = badge;
    }
    public int getState() {
        return state;
    }
    public void setState(int state) {
        this.state = state;
    }
}
 
class Store implements StoreFunc {
    String address; //адрес магазина
    int openingHours; //количество рабочих часов в день
    int state; //состояние магазина (1 – открыто, 0 – закрыто)
    static int maxProfit; //статическое данное – максимальный доход в день
    Cashier c;
    Store (String ad, int oh, String bd) {
        this.address = ad;
        this.openingHours = oh;
        this.state = 1;
        c = new Cashier (bd);
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public int getOpeningHours() {
        return openingHours;
    }
    public void setOpeningHours (int openingHours) {
        this.openingHours = openingHours;
    }
    public int getState() {
        return state;
    }
    public void setState(int state) {
        this.state = state;
    }
    public void getIn (int gi) {
        try {
            if (state != 1) throws IllegalArgumentException exc;
        }
    }
    public void buyProds (int bp) {
        try {
            if (state != 1) throws IllegalArgumentException exc;
            if (c.state == 0) throws IndexOutOfBoundException exc;
        }
    }
    static int getMaxProfit() {
        return maxProfit;
    }
    static void setMaxProfit (int maxProfit) {
        this.maxProfit = maxProfit;
    }
}
 
class Products {
    String farm; //название фермы-поставщика продукта
    String shelfLife; //дата – проверка сроков годности продуктов
    Products (String f, String sl) {
        this.farm = f;
        this.shelfLife = sl;
    }
    public String getFarm() {
        return farm;
    }
    void setFarm(String farm) {
        this.farm = farm;
    }
    public String getShelfLife() {
        return shelfLife;
    }
    void setShelfLife(String shelfLife) {
        this.shelfLife = shelfLife
    }
}
 
class ProductStore extends Store {
    Products prod;
    ProductStore (String ad, int oh, String bd, String f, String sl){
        super (ad, oh, bd);
        prod = new Products (f, sl);
    }
    void show() {
        System.out.println(…);
    }
}
 
public class Main{
    public static void main (String[] args){
        Store store = new Store(“Moskovskaya 2”, 8, “Ivanov”);
        store.getIn (10);
        store.c.changeState(1);
        store.buyProds(15);
        ProductStore pStore = new ProductStore (“Krimskaya 5”, 6, “Petrov”, “Green Farm”, “04.06.2021”);
        StoreFunc store1;
        store1 = store;
        store1.show();
        store1 = pStore;
        store1.show();
    }
}
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072611
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daniel43,

Вообще непонятно, что Вы хотите сделать.
Во-первых не хватает сущности "покупатель".
Соответственно "войти" должно принимать "покупать" и хранить его у себя. Ну и выйти надо.
"Войти" должно быть методом с результатов- удалось войти, или нет. То, что магазин закрыт- не исключительная ситуация, а нормальная. Ну не вошёл и всё - если дверь не взломал- то исключительной ситуации нет.

Аналогично попытка оплатить - это попытка.
Кассиров, кстати, в общем случае несколько ;)

Плюс ещё непонятно, кто открывает магазин :)
Ну и "время работы" - это не количество рабочих часов, а "от" "до", да ещё и по дням недели. В общем сущность "расписание".

В целом непонятна задача- поэтому можно писать долго, но уже лень.
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072622
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понятно какой нужно совет по "исправлению". Исправлять можно только то что не соответсвтует модульным тестам или ТЗ.

Код: java
1.
2.
3.
4.
5.
6.
    public void buyProds (int bp) {
        try {
            if (state != 1) throws IllegalArgumentException exc;
            if (c.state == 0) throws IndexOutOfBoundException exc;
        }
    }



Можно дать такой совет - не использовать исключения для реализации основного (major) business-flow.

Исключения они ... на семантическом уровне должны быть редкими. Потому и называются - исключительные ситуации.
Сеть пропала например. Вот это наша ситуация. Исключительная.
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072880
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Можно дать такой совет - не использовать исключения для реализации основного (major) business-flow.

Исключения они ... на семантическом уровне должны быть редкими. Потому и называются - исключительные ситуации.
Сеть пропала например. Вот это наша ситуация. Исключительная.


тут ты не прав,использовать исключения в качестве логики- почему нет- собсвенно кто мешает ,кроме стереотипов
ты же базист - и там на основе исключений так же строиться логика причем даже по номеру ошибки,чем джава для этого хуже?
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072893
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072898
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton

Можно дать такой совет - не использовать исключения для реализации основного (major) business-flow.

Исключения они ... на семантическом уровне должны быть редкими. Потому и называются - исключительные ситуации.
Сеть пропала например. Вот это наша ситуация. Исключительная.


тут ты не прав,использовать исключения в качестве логики- почему нет- собсвенно кто мешает ,кроме стереотипов
ты же базист - и там на основе исключений так же строиться логика причем даже по номеру ошибки,чем джава для этого хуже?

Ну представь что я - бизнес. Я ставлю тебе задачу. Зашел поциент в магазин. Купил плазму. Оформил кредит
с рассрочкой. У меня есть 2 кейса. Кредитная система выдала кредит. Или отклонила.

Ты спрашиваешь - а где тут исключения? IllegalArgument*, IndexOut*, e.t.c.

Я говорю - я понятия не имею о чем ты говоришь. Если тебе это надо - делай. Но моё описание
бизнес-процесса не содержит таких категорий.
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072910
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
asv79
пропущено...


тут ты не прав,использовать исключения в качестве логики- почему нет- собсвенно кто мешает ,кроме стереотипов
ты же базист - и там на основе исключений так же строиться логика причем даже по номеру ошибки,чем джава для этого хуже?

Ну представь что я - бизнес. Я ставлю тебе задачу. Зашел поциент в магазин. Купил плазму. Оформил кредит
с рассрочкой. У меня есть 2 кейса. Кредитная система выдала кредит. Или отклонила.

Ты спрашиваешь - а где тут исключения? IllegalArgument*, IndexOut*, e.t.c.

Я говорю - я понятия не имею о чем ты говоришь. Если тебе это надо - делай. Но моё описание
бизнес-процесса не содержит таких категорий.

в чем проблема?я ловлю эксепшены ,могу делать далее что хочу с ними ,в том числе строить флоу на этом
и это как бы нормально сейчас - я прохожу сейчас академ курс всем изветсного иститута питерского,так вот там прям советуют
так что отбрасывай стереотипы
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072912
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton
пропущено...

Ну представь что я - бизнес. Я ставлю тебе задачу. Зашел поциент в магазин. Купил плазму. Оформил кредит
с рассрочкой. У меня есть 2 кейса. Кредитная система выдала кредит. Или отклонила.

Ты спрашиваешь - а где тут исключения? IllegalArgument*, IndexOut*, e.t.c.

Я говорю - я понятия не имею о чем ты говоришь. Если тебе это надо - делай. Но моё описание
бизнес-процесса не содержит таких категорий.

в чем проблема?я ловлю эксепшены ,могу делать далее что хочу с ними ,в том числе строить флоу на этом
и это как бы нормально сейчас - я прохожу сейчас академ курс всем изветсного иститута питерского,так вот там прям советуют
так что отбрасывай стереотипы

Стас а что кредитный отдел тебе скажет? У тебя возникло исключение типа IndexOutOfBound?
Я просто хочу чтоб ты понял мою мысль.
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072915
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
asv79
пропущено...

в чем проблема?я ловлю эксепшены ,могу делать далее что хочу с ними ,в том числе строить флоу на этом
и это как бы нормально сейчас - я прохожу сейчас академ курс всем изветсного иститута питерского,так вот там прям советуют
так что отбрасывай стереотипы

Стас а что кредитный отдел тебе скажет? У тебя возникло исключение типа IndexOutOfBound?
Я просто хочу чтоб ты понял мою мысль.

ну разные исключения по разному обрабатываются
согласись что если на акаунте нет бабок- то там возникнет иное исключение)
или если у человека неправильная кредитная история - то это вообще обабатывается немного иначе )
майтон - ексепшен флоу норм практика почитай новые статьи
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072916
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton
пропущено...

Стас а что кредитный отдел тебе скажет? У тебя возникло исключение типа IndexOutOfBound?
Я просто хочу чтоб ты понял мою мысль.

ну разные исключения по разному обрабатываются
согласись что если на акаунте нет бабок- то там возникнет иное исключение)
или если у человека неправильная кредитная история - то это вообще обабатывается немного иначе )
майтон - ексепшен флоу норм практика почитай новые статьи

Ты хочешь сказать что я не пользуюсь исключениями? Конечно пользуюсь.

Но посмотри сюда. Бизнесовый метод. Купить товары. И что? Он бросает обще-системные исключения.

Код: java
1.
2.
3.
4.
5.
6.
 public void buyProds (int bp) {
        try {
            if (state != 1) throws IllegalArgumentException exc;
            if (c.state == 0) throws IndexOutOfBoundException exc;
        }
    }



Ты-бы так сделал?
...
Рейтинг: 0 / 0
Исключительные ситуации
    #40072927
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
asv79
пропущено...

ну разные исключения по разному обрабатываются
согласись что если на акаунте нет бабок- то там возникнет иное исключение)
или если у человека неправильная кредитная история - то это вообще обабатывается немного иначе )
майтон - ексепшен флоу норм практика почитай новые статьи

Ты хочешь сказать что я не пользуюсь исключениями? Конечно пользуюсь.

Но посмотри сюда. Бизнесовый метод. Купить товары. И что? Он бросает обще-системные исключения.

Код: java
1.
2.
3.
4.
5.
6.
 public void buyProds (int bp) {
        try {
            if (state != 1) throws IllegalArgumentException exc;
            if (c.state == 0) throws IndexOutOfBoundException exc;
        }
    }



Ты-бы так сделал?


нет конечно,за это я бы уволил
но в тех местах ,где такая необходимость бывает - нет ничего плохого в ексепшн флоу
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Исключительные ситуации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]