powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вынос части кода в другой класс в C#
16 сообщений из 41, страница 2 из 2
Вынос части кода в другой класс в C#
    #39877955
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRТ.е., для каждого класса свой файл-исходник?даже для интерфейса с одним членом
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39877957
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

Для нетленного "hello world" м.б. А когда у тебя в проекте одного шарпа почти 200 тыс. строк кода, то как-то сколько у тебя там файлов - тысяча или три особой разницы уже не имеет и лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл. По крайней мере при этом не заморачиваешь голову тем в какой файл что поместить.
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39877958
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забудем также и про source control
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878205
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRТ.е., для каждого класса свой файл-исходник?

это хорошая практика.
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878454
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roust_mДобрый день,

Помогите чайнику. Есть такой класс: XeroExport.cs. В нем очень много кода. Он выглядит примерно так:
Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
namespace Export
{
    public class XeroExport: ApiWrapper
    {
        public void ExcelExport()
        {
            DateTime startDate = DateTime.ParseExact(ConfigurationManager.AppSettings["PeriodStart"], "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture);
            DateTime endDate = DateTime.ParseExact(ConfigurationManager.AppSettings["PeriodEnd"], "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture);
            Call_BalanceSheet(startDate, endDate);
        }
        private List<InvoiceTableRow> converZInvouice(Invoice invoice)
        {
        }
        private String convertInvoiceToString(Invoice invoice)
        {
        }
        private void saveInvoices(string filename, List<Invoice> invoices)
        {
        }
        private void GetInvoices()
        {
        }
        private int GetTotalInvoiceCount()
        {
        }
        private int GetTotalContactCount()
        {
        }
        private int GetTotalJournalCount()
        {
        }
        public int CheckReportStatus(string ReportName)
        {
            ...  
            return ReportStatus;
        }
        private void Call_BalanceSheet(DateTime periodStart, DateTime periodEnd)
        {
            int reportStatus = CheckReportStatus("Balance Sheet");
            if (reportStatus == 1)
            {
                 ...
                 Insert_BalanceSheet(monthStartDate, monthEndDate, reportDate);
                 ...
            }
        }
        private void Insert_BalanceSheet(DateTime periodStart, DateTime periodEnd, DateTime runDate)
        {
            ...   
            var pal = Api.Reports.BalanceSheet(periodStart, null, null, false, null, null, null);
        }
    }
}



Я хочу методы Call_BalanceSheet и Insert_BalanceSheet вынести в отдельный класс: BalanceSheet.cs:

Код: 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.
using System;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using Xero.Api.Example.MVC.Helpers;

namespace Export
{

    public class BalanceSheet
    {
        private void Call_BalanceSheet(DateTime periodStart, DateTime periodEnd)
        {
            int reportStatus = CheckReportStatus("Balance Sheet");
            if (reportStatus == 1)
            {
               ... 
               Insert_BalanceSheet(monthStartDate, monthEndDate, reportDate);
            }
        }
        private void Insert_BalanceSheet(DateTime periodStart, DateTime periodEnd, DateTime runDate)
        {
             ....
             var pal = Api.Reports.BalanceSheet(periodStart, null, null, false, null, null, null);
        }
    }

}



После того как я это делаю, XeroExport.cs не находит Call_BalanceSheet, BalanceSheet.cs не находит CheckReportStatus и Api.

Как сделать так, чтобы они видели методы друг друга?

Не ругайте сильно, опыта программирования у меня не много.

Спасибо.

добавлю свои 5 коп, так, чисто. набирайся опыта. декомпозиция задачи на подзадачи это победа над сложностью. она начинается в осмыслении задачи. а что дробить - постройку моста, копку огорода, или "класс" - это дело техники
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878556
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatLR,

Для нетленного "hello world" м.б. А когда у тебя в проекте одного шарпа почти 200 тыс. строк кода, то как-то сколько у тебя там файлов - тысяча или три особой разницы уже не имеет и лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл. По крайней мере при этом не заморачиваешь голову тем в какой файл что поместить.
И чем же "лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл"? Потому что какой-нить условный Фаулер сформулировал такое правило в условном 2000-м году? И с тех пор в условной девелоперской конторе существует это правило с перефразировкой для высших руководителей "это оптимально при высокой текучести кадров/кодеров". Правила создают люди. Правила меняются, когда изменяются обстоятельства/возможности, но только если люди не "тупо им следуют". Предлагаю правило: один "use case"/"предметный функционал"/"инфо-кластер" - один файл - чем плохое правило?)))
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878581
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

Да мне пох - напихай хоть вообще все в один файл. Чем больше пионэры наговнокодят, тем больше мне потом возможностей бабла срубить - я это еще лет 10 назад понял :))
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878582
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRИ чем же "лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл"? Потому что какой-нить условный Фаулер сформулировал такое правило в условном 2000-м году?

Правила формулируются на основе совокупного опыта. Если вы не знаете или не понимаете чего-то, это вовсе не значит, что смысла в этом нет.


LRПравила создают люди. Правила меняются, когда изменяются обстоятельства/возможности, но только если люди не "тупо им следуют". Предлагаю правило: один "use case"/"предметный функционал"/"инфо-кластер" - один файл - чем плохое правило?)))

Эволюция происходит в процессе накопления опыта. Правила как создаются, так и меняются на основе систематизации такого опыта.

Никто же не виноват, что это у вас всё с потолка берётся, и вы поэтому так к этому относитесь.
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878649
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttLRИ чем же "лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл"? Потому что какой-нить условный Фаулер сформулировал такое правило в условном 2000-м году?

Правила формулируются на основе совокупного опыта. Если вы не знаете или не понимаете чего-то, это вовсе не значит, что смысла в этом нет.


LRПравила создают люди. Правила меняются, когда изменяются обстоятельства/возможности, но только если люди не "тупо им следуют". Предлагаю правило: один "use case"/"предметный функционал"/"инфо-кластер" - один файл - чем плохое правило?)))

Эволюция происходит в процессе накопления опыта. Правила как создаются, так и меняются на основе систематизации такого опыта.

Никто же не виноват, что это у вас всё с потолка берётся, и вы поэтому так к этому относитесь.

хвост, твоим постам немного уменьшить желчи. ты опытный разраб, без сомнения, но желчный какой-то, злой
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878754
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachхвост, твоим постам немного уменьшить желчи. ты опытный разраб, без сомнения, но желчный какой-то, злой

Я вообще не понял какую желчь вы тут увидели.

Просто уже поддостало, когда люди кладут болт на знания, накопленный опыт. Вертели они на одном месте всё это. У них же есть мнение. Абсолютно ни на чём не основанное, просто мнение. Ещё больше раздражает, когда начинают оперировать терминами нравится/не нравится, вопрос вкуса. Такое ощущение, что мы тут в мире моды, аляповых трусов и платьев горошек. Какого хрена?

Не согласны с чем-то, приводите аргументы. Так и так. А не вот это вот "условный Фаулер сформулировал в условном хреновом году".

Если вас так же лечить, например, будут. Подорожником, потому что кому-то из врачей ПОКАЗАЛОСЬ, что так лучше, а в книгах всякую ерунду пишут для дебилов -- зачем читать? Как вы к этому отнесётесь?
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878760
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatLR,

Да мне пох - напихай хоть вообще все в один файл. Чем больше пионэры наговнокодят, тем больше мне потом возможностей бабла срубить - я это еще лет 10 назад понял :))
Аналогично пох - продолжай тупо следовать :)
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878780
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRfkthatПаршиал классы придумали для вполне определенной цели - разнести по разным файлам сгенеренную каким-либо генератором часть класса и ту часть класса, которая пишется руками. Использовать их для чего-то другого нафиг не следует. Если твой класс большой, то его просто надо разбивать на несколько.
То же самое когда-то говорилось и о регионах (regions). Хотите сказать, не используете их?
Лет десять уж точно не использую.
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39878783
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRfkthatLR,

Для нетленного "hello world" м.б. А когда у тебя в проекте одного шарпа почти 200 тыс. строк кода, то как-то сколько у тебя там файлов - тысяча или три особой разницы уже не имеет и лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл. По крайней мере при этом не заморачиваешь голову тем в какой файл что поместить.
И чем же "лучше просто тупо следовать правилу - один интерфейс/класс/enum - один файл"? Потому что какой-нить условный Фаулер сформулировал такое правило в условном 2000-м году? И с тех пор в условной девелоперской конторе существует это правило с перефразировкой для высших руководителей "это оптимально при высокой текучести кадров/кодеров". Правила создают люди. Правила меняются, когда изменяются обстоятельства/возможности, но только если люди не "тупо им следуют". Предлагаю правило: один "use case"/"предметный функционал"/"инфо-кластер" - один файл - чем плохое правило?)))
А можете раскрыть, что такое один "use case"/"предметный функционал"/"инфо-кластер" в вашем понимании?
И как это согласуется, или чем отличается от принципов SOLID?
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39879021
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухА можете раскрыть, что такое один "use case"/"предметный функционал"/"инфо-кластер" в вашем понимании?
И как это согласуется, или чем отличается от принципов SOLID?
В моем понимании принципы оформления кода и принципы проектирования - разные вещи (как холодное/горячее и горькое/сладкое). Т.е., следовать правилу "один интерфейс/класс/enum - один файл" в надежде, что это каким-то боком соотносится с принципами проектирования (с тем же упоминавшимся здесь "single responsibility") - очевидное заблуждение. Простой пример: enum, который задействуется только в методах некоторого класса. Очевидно, что изменения в этом enum будут делаться одновременно с изменениями в этом классе. И вот, с точки зрения того же SRP, код enum и класса правильней размещать в отдельных файлах или в одном? Это к тому, что принципы оформления кода более субъективны чем принципы проектирования (имхо, начиная новый проект, команда разработчиков сама должна выработать правила оформления кода).
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39879025
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

Что вам мешает свой несчастный енум тогда засунуть внутрь класса? :)

Учитывая, что вы его больше нигде не используете, имеет смысл сделать его ещё и приватным, чтобы не торчал наружу и не смущал остальных разработчиков.
...
Рейтинг: 0 / 0
Вынос части кода в другой класс в C#
    #39879026
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRЭто к тому, что принципы оформления кода более субъективны чем принципы проектирования (имхо, начиная новый проект, команда разработчиков сама должна выработать правила оформления кода).

Я бы всё-таки хотел бы услышать адекватные обоснования тем или иным решениям.

Вот этот субъективизм вообще ни в одно место. Это детский сад на лямочках.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вынос части кода в другой класс в C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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