Библиотека для .NET Framework, упрощающая разработку начинающим и средним программистам

Библиотека для .NET Framework, упрощающая разработку начинающим и средним  программистам

Приветствую братьев программистов, с праздником нас! Хотел бы начать своё путешествие по миру DTF с небольшой статейки о том, как меня «зафоркала» рутина во время разработки и я решил состряпать либу для решения проблемных ситуаций.

Куда и зачем делать C# ещё проще?

Хороший вопрос, на самом деле. Язык, конечно, не Python, но тоже очень простой. На чём бы мы не писали, мы всегда сталкиваемся с "рутинными" ситуациями по типу чтения/записи в файл. Несомненно, C# может порадовать нас несколькими строками кода для чтения информации из файла, но когда ты уже наизусть их знаешь и не хочется писать одно и то же каждый раз — начинает надоедать. Нет желания тратить лишние ресурсы на лишние (хоть и простые) строки кода...

Как раз для этого я и решил бахнуть либу. Не только для работы с файлами, конечно же.

Что и для кого?

Прежде всего либу я писал для себя, потихоньку коммитя изменения в закрытый Git репозиторий. Но потом появилось желание добавить функционала и открыть репу, чтобы её могли посмотреть/попробовать/оценить все желающие.

По моему мнению такая штучка будет актуальна для тех, кто разделит моё мнение насчёт рутинных ситуаций и, конечно же, новичков.

Давайте покажу самый простой пример…

Как выполнить чтение из файла средствами C# без сокращения кода?

using (StreamReader reader = new StreamReader(path)) { string text = await reader.ReadToEnd(); }

Как выполнить это же действие в одну строчку с помощью моей библиотеки?

string text = FileSystem.Read(fileName);

Всё, всего одна строка. Именно этого мне не хватало последнее время.

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

Да, можно обернуть первый пример в одну строку, но так лучше программы не писать (лично моё мнение) . Код должен быть читаем и понятен, чтобы потом, спустя некоторое время, не смотреть на него как на зеницу ока.

Это всё? Или можно делать что-то ещё?

Конечно, это не всё. Библиотека так же содержит и другие классы, помогающие программисту:

  • Internet

Проверка доступности интернет соединения
Скачивание файлов с отслеживанием прогресса
Чтение содержимого файла на сервере
Получение пинга до указанного сервера/сайта (именно пинг в мс.)
Получение WAN IP текущей машины
Получение IP адреса указанного сайта

  • FileSystem

Вариант со статическими методами и экземпляром класса с определённым файлом
Синхронное/асинхронное чтение/запись/дополнение файлов
Поддержка автоматического создания файла при создании экземпляра класса
Получение размера указанного файла
Получение размера указанной директории

  • Config

Вариант со статическими методами и экземпляром класса с определённым файлом
Чтение параметров (можно сразу строкой, а можно числом)
Запись параметров
Поддержка секций
Возможность полного удаления параметра из файла

  • Hardware

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

  • Features

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

  • WConsole

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

# PYTHON userInput = input("Enter your name: ") // C# with Watersharp string userInput = WConsole.ReadLine("Enter your name: ");

Заключение и полезные ссылки

Не хочу призывать всех использовать либу. У каждого свой стиль программирования и свои привилегии, но… надеюсь найдутся те, кто поймёт меня!

Огромное спасибо за уделённое время. Если будут вопросы или критика — пишите.

Всем удачной недели, до встречи на DTF!

GitHub — Watersharp

NuGet Package — Watersharp

44
11 комментариев

File.ReadAllText(path); - чтение файла
NetworkInterface.GetIsNetworkAvailable(); - проверка сети
FileInfo(path) / DirectoryInfo(path) - информация по файлу/директории

3

Как вариант, почему бы и нет. Но DirectoryInfo не обладает методом получения размера папки. Тут на любителя в целом.
Мои методы точно так же читают/пишут и закрывают файл но в максимально примитивном решении

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

1

Да, плавала в голове такая мысль. Но мне пока что более удобно юзать dll
В принципе там опенсорс не зря, можно сфоткать репозиторий на комп да делать что хочется

Мертвый фреймворк

Сам .NET Framework то?

Но зойчем 4.7.2 ?
Есть же нормальный net 6?

Честно неочень понимаю твоего примера.
string text = FileSystem.Read(fileName);

Есть в стандартной библиотеке System.IO:

byte[] mas = File.ReadAllBytes(path);
string txt = File.ReadAllText(path);


Можешь пояснить в чем профит твоего сахара?

Вижу уже написали лол. Эниве странный сахар получается.