Форум программистов, компьютерный форум CyberForum.ru

Бредовый код - Android

Восстановить пароль Регистрация
 
Karat37
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 14
20.02.2016, 04:12     Бредовый код #1
Доброго времени суток ребят.
нужен совет, иначе голова однажды просто лопнет.
цель наполнить массив объектами, с разными значениями полей объектов
в общем имеем следующее:

первый класс: обращаясь к методу moveY в котором должно всё происходить
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Player {
    public Player(){
        x = 150;
        y = 0;
        currentWorld = 1;
        thisPlanet = new Ore[150][300];
    }
    private int x;
    private int y;
    private int currentWorld;
    Initialize initialize;
    private Ore[][] thisWorld;
 
    public void moveY(int y){
        thisPlanet[x][y] = initialize.initialize(new Ore(),currentWorld,y);
        this.y = y;
    }
второй класс Ore,объекты которого создаются при обращении к методу initialize.initialize(new Ore(),currentWorld,y):
Java
1
2
3
4
5
6
7
public class Ore {
    public String name;
    public int id;
    public int rarity;
    public int count;
    public int density;
}
третий класс, к которому обращается метод при создании объекта Ore и добавлением его в массив, что-бы определить поля:
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
public abstract class Initialize {
 
    private int y;
    Ore ore;
    Planet1 planet;
 
    public Ore initialize(Ore ore, int planet, int y) {
        this.ore = ore;
        this.y = y;
        checkPlanet(planet);
        return ore;
    }
 
 
    private void checkPlanet(int planet) {
 
        switch (planet) {
            case 1:
                planet1();
                break;
        }
    }
 
    private void planet1() {
        planet = new Planet1();
        planet.check(ore,y);
    }
}
а четвёртый класс уже определяет поля объекта Ore:

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
public class Planet1 {
    private int rarity;
    Ore ore;
 
    public void check(Ore ore, int y) {
        this.ore = ore;
        rock(y);
 
    }
 
 
    private void rock(int y) {
        rarity = 20;
        if (y > 5 && y < 300) {
            if(rarity>Math.random()*100) {
                ore.name = String.valueOf(R.string.rock);
                ore.id = 1;
                ore.count = (int) (40 + (Math.random() * y+10));
                ore.density = 4;
                return;
            }
        }
        iron(y);
    }
 
    private void iron(int y) {
        rarity = 25;
        if (y > 10 && y < 300) {
            if(rarity>Math.random()*100) {
                ore.name = String.valueOf(R.string.iron);
                ore.id = 2;
                ore.count = (int) (70 + (Math.random() * y+10));
                ore.density = 1;
                return;
            }
        }
        silver(y);
    }
 
    private void silver(int y) {
        rarity = 20;
        if (y > 40 && y < 300) {
            if(rarity+(y/10)>Math.random()*100) {
                ore.name = String.valueOf(R.string.silver);
                ore.id = 3;
                ore.count = (int) (37 + (Math.random() * y+10));
                ore.density = 3;
                return;
            }
        }
        gold(y);
    }
}
несколько вопросов по этому коду визникло
1)Только мне кажется этот код с бесполезно большим количеством передач объекта от одново к другому методу?
2)Не понимаю зачем нужно наследование, интерфейсы и абстрактные классы, если работу ведёшь над проектом один и смысл от соблюдения контрактов уже не играет такой большой роли, направьте в нужном направлении, чувствую я сошел с пути
3)что скажите про архитектуру этого кода?

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

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

Извиняюсь за много букв, если что-то не понятно, спрашивайте, попытаюсь объяснить как можно понятнее.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
20.02.2016, 10:12     Бредовый код #2
Karat37, в java не принято поля public делать, обычно они private, иногда protected. А работа из вне с ними происходит через set\get.

Добавлено через 1 минуту
А по поводу структуры и переписывания по много раз - это нормально я считаю. Поначалу будете переписывать, потом уже сразу оптимально писать, думаю все через это проходят.
Karat37
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 14
21.02.2016, 15:19  [ТС]     Бредовый код #3
а по поводу наследования и интерфейсов?

Добавлено через 26 минут
Подскажите как лучше реализовать генерацию, процедурную,т.е. по мере необходимости, или сразу всё? получается примерно 45000 объектов в массве, не слишком будет для телефона?

Добавлено через 13 часов 52 минуты
Закрыть тему.
Yandex
Объявления
21.02.2016, 15:19     Бредовый код
Ответ Создать тему
Опции темы

Текущее время: 15:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru