Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
1 / 1 / 1
Регистрация: 12.12.2012
Сообщений: 22
1

Необходима ли инкапсуляция

27.09.2016, 15:28. Показов 1606. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть переменная (флаг) типа bool. Нужно ли сделать отдельные медоты, которые присваивают на true/false?
C#
1
2
3
4
5
6
public static void InitResume() {
            createResume = true;
        }
public static void InitPause() {
            createResume = false;
        }
Или проще напрямую присваивать: createResume = false; Как код более естетично смотрится?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2016, 15:28
Ответы с готовыми решениями:

Класс строк, необходима ли инкапсуляция?
Волнует такой вот вопрос, писал класс строк с целью перегрузки операторов, в качестве полей класса:...

Инкапсуляция
import random class Pasvagon(): def __init__(self, name, capacity, procent): ...

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

Инкапсуляция
Приятелю задали задачу Реализуйте класс quantity, инкапсулирующий количество товаров с поддержкой...

9
.NET senior
440 / 358 / 137
Регистрация: 23.09.2016
Сообщений: 980
27.09.2016, 15:42 2
Я бы использовал методы - нагляднее выглядит, проще для понимания, легче тестировать; потом, при необходимости, достаточно будет переписать только реализацию соответствующего метода и не задумываться об изменениях в местах его вызовов.
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
27.09.2016, 16:03 3
Лучший ответ Сообщение было отмечено olimpset как решение

Решение

Заведите пропертю и обращайтесь через неё
C#
1
public static bool CreateResume { get; set; }
или, если нужно оставить поле
C#
1
public static void SetResume(bool value) { createResume = value; }
0
1 / 1 / 1
Регистрация: 12.12.2012
Сообщений: 22
27.09.2016, 16:09  [ТС] 4
Да, этот вариант будет лучше. Меньше строк кода будет, в отличии от инкапсуляции. Тем более если так сделать:
C#
1
static bool CreateResume { get { return true; } set {} }
(по умолчанию будет true), то так всего одна строка. Я добиваюсь минимизации кода, убираю пустые строки, стараюсь небольшой метод, условие и т.д в одну строку.
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
27.09.2016, 16:48 5
Цитата Сообщение от olimpset Посмотреть сообщение
static bool CreateResume { get { return true; } set {} }
чтот мне кажется, что в таком случае всегда будет возвращать true,не?
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
27.09.2016, 16:50 6
Цитата Сообщение от olimpset Посмотреть сообщение
в отличии от инкапсуляции
некорректно так говорить

Таким кодом вы будете запутывать клиентов класса. Они будут иметь возможность устанавливать значение поля, но по факту ничего происходить не будет. или запретите это, сделав private set, или подумайте как по-другому это исправить.

Смотрите, чтоб не сказалось на читаемости потом
0
4 / 4 / 2
Регистрация: 07.07.2016
Сообщений: 23
27.09.2016, 16:58 7
Лучший ответ Сообщение было отмечено olimpset как решение

Решение

Нужно ли сделать отдельные медоты, которые присваивают на true/false?
Нет.
Подправить имя, что бы по нему однозначно было понятно, что это переменная-флаг, и всё

C#
1
public static bool ResumeCreated;
Эстетично и практично
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
27.09.2016, 18:07 8
Цитата Сообщение от olimpset Посмотреть сообщение
Меньше строк кода будет, в отличии от инкапсуляции
Вообще-то свойства это и есть инкапсуляция оформленная в виде удобного сахара. В итоге, get и set всё равно развернуться в методы.

Цитата Сообщение от olimpset Посмотреть сообщение
Я добиваюсь минимизации кода, убираю пустые строки, стараюсь небольшой метод, условие и т.д в одну строку
Это не всегда полезно делать. Не увлекайся.
0
1 / 1 / 1
Регистрация: 12.12.2012
Сообщений: 22
27.09.2016, 18:26  [ТС] 9
Но все же, хоть и будет сплошная каша из кода (без промежутков лишних), найти что то не составляет труда в коде, главное грамотно методы назвать, что бы потом знать что и где искать.
0
746 / 487 / 187
Регистрация: 30.12.2012
Сообщений: 1,278
Записей в блоге: 2
27.09.2016, 18:38 10
Цитата Сообщение от olimpset Посмотреть сообщение
хоть и будет сплошная каша из кода
Если вам нужна компактность, то просто сворачивайте методы, но кашу внутри не городите. Потом забудется, и будет сложно отлаживать, коли чего поломается. Код, прежде всего, пишется для людей, а только потом - для машин.
0
27.09.2016, 18:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2016, 18:38
Помогаю со студенческими работами здесь

Инкапсуляция
Я понял, что такое инкапсуляция. Понял что такое сеттер, и для чего он работает. Но для чего...

Инкапсуляция
Прочитал что инкапсуляция в делфи осуществляется путем занесения полей и методов в раздел private,...

Инкапсуляция
Смотрел обучающие видео , читал книжки и не понял. Инкапсуляция позволяет обращаться к свойствам...

Инкапсуляция
Требуется произвести проверку данных в Edit1 Edit2 Edit3 Выбивает ошибку некорректных данных ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru