Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
6 / 5 / 1
Регистрация: 01.10.2021
Сообщений: 76

Насчет красоты или правильности кода

17.10.2022, 21:40. Показов 395. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Form1 : Form
{
Farm farm = new Farm(); //экземпляр класса Farm (рандомный класс не обращайте внимание на название)
public Form1()
        {
            instance = this; //ссылка на текущий экземпляр формы
            InitializeComponent();
        }
private void Button_KillAnimal_Click(object sender, EventArgs e)
        {
            farm.KillAnimal(instance);
        }
}
class Farm
{
public void KillAnimal(Form1 form)
        {
 
            //какие то действия, чтобы изменять элементы формы. Например form.button1.Text = "123"
        }
}
В общем у меня вопрос в плане правильности или красоты, так вообще нормально в качестве параметра передавать ссылку на экземпляр формы и уже в другом классе работать с элементами формы. Или лучше работать с элементами формы внутри Form1.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.10.2022, 21:40
Ответы с готовыми решениями:

Салон красоты. За который наименьшее время k сотрудников салона красоты смогут обслужить всех девушек?
В салон красоты пришло n девушек. Каждая из них должна посетить парикмахера и косметолога. У каждого она проводит по m часов. За который...

уточнение насчет кода
наверно не много не в тему, но все же связанное с программированием. (экзамен на носу) В чем разница: int number; от ...

Рекомендации насчет кода
Посоветуйте, пожалуйста, на какие классы и методы программу следует разбить. Замечания насчет г-нокода приветствуются! using System;...

4
2393 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,565
17.10.2022, 22:02
Цитата Сообщение от 4lehikc Посмотреть сообщение
нормально в качестве параметра передавать ссылку на экземпляр формы и уже в другом классе работать с элементами формы.
Если в представленном куске кода заложен смысл, который в названии классов/методов, то никакие Farm или Animal ничего о форме или любой её части знать не должны в принципе. Они должны работать только в своей зоне ответственности (в вашем случае объект фермы что-то делает с объектами животных). Форма обо всех перипетиях на ферме должна узнавать по событиям. Что-то в духе:
C#
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
class Form1 : Form
{
        Farm farm = new Farm(); //экземпляр класса Farm (рандомный класс не обращайте внимание на название)
        public Form1()
        {
            instance = this; //ссылка на текущий экземпляр формы
            InitializeComponent();
 
            farm.AnimalKilled += () =>
            {
                //какие то действия, чтобы изменять элементы формы. Например button1.Text = "123"
            };
        }
 
        private void Button_KillAnimal_Click(object sender, EventArgs e)
        {
            farm.KillAnimal();
        }
}
 
class Farm
{
        public void KillAnimal()
        {
            //какие то действия c объектом Animal
            AnimalKilled?.Invoke();
        }
 
        public event Action AnimalKilled;
}
0
6 / 5 / 1
Регистрация: 01.10.2021
Сообщений: 76
18.10.2022, 09:13  [ТС]
То есть если у меня будут еще какие-то методы в Farm, мне к каждому из них создавать события. А потом в конструкторе Form1 уже добавлять для каждого события, что они должны делать на форме.
0
2393 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,565
18.10.2022, 10:06
4lehikc, пример выше это лишь простейший случай. Всё зависит от конкретной задачи.
1) событие может быть и одно, с передачей аргументов различного вида, несущими информацию о том, что произошло
2) заполнять в конструкторе не обязательно, и не обязательно это должны быть анонимные методы. Все нажатия на кнопки и т.п. - это тоже события. Посмотрите, как они инициализируются.
3) ну и опять же, в зависимости от задачи возможно лучше воспользоваться паттерном MVP: Создание программы - ООП модель, MVP
0
2285 / 1601 / 400
Регистрация: 26.06.2017
Сообщений: 4,743
Записей в блоге: 1
18.10.2022, 10:35
Цитата Сообщение от 4lehikc Посмотреть сообщение
мне к каждому из них создавать события
Можно и так, а можно и одно общее событие генерировать, как сказали выше. Если методы меняют свойства объекта Farm, то можно реализовать INotifyPropertyChanged интерфейс.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2022, 10:35
Помогаю со студенческими работами здесь

Насчёт пин кода в Adsense
Кто уже через это прошёл подскажите пожайлуста. Я как понимаю для вывода денег после набора минимум 100 USD, необходим какой то пин...

Проблема насчет написания кода
Вот я начал изучать программирование , делать какие-то легкие игры на юнити и столкнулся с такой проблемой. Вот вроде смотрю какие-то...

Не уверен в правильности кода
вот задание, а вот код #include <iostream> #include <cmath> using namespace std; int main() { int i,x,fact,p,j; p=1; for...

Затруднение в правильности написания кода
Пожалуйста, помогите решить проблему. Много вариантов перепробовала, ничего особо не получалось, так что решила обратиться за помощью сюда....

Проверка правильности написаного кода с++
Условие: Дано вещественное число Х и целое число N>0. Найти значение Скажите, пожалуйста, правильно ли написан код? #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru