Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Исключительные ситуации / 11 сообщений из 11, страница 1 из 1
23.05.2021, 15:39
    #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
25.05.2021, 09:08
    #40072611
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключительные ситуации
daniel43,

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

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

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

В целом непонятна задача- поэтому можно писать долго, но уже лень.
...
Рейтинг: 0 / 0
25.05.2021, 10:04
    #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
25.05.2021, 19:40
    #40072880
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключительные ситуации
mayton

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

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


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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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