Библиотека на C#
От: ZagSer168 Ниоткуда https://x.u168.ru
Дата: 27.04.10 09:56
Оценка:
Здравствуйте!
Хочу собрать библиотеку, реализующую несколько функциональностей, объединённых общей инфраструктурой. Основные возможности такие:


Всё должно легко интегрироваться с существующими системами.
Наработки есть (клиент-серверная прога. клиент на C#, сервер на PHP/MySQL).
У меня возникли вопросы:

  1. Как должен быть оформлен код? Сейчас в проге почти нет комментариев. Должны ли комментарии быть на английском языке?
  2. Идентификаторы названы как в нотации явы (методы и свойства с маленькой буквы). Нужно ли переделывать под .NET стиль.
  3. Каким хостингом кода можно воспользоваться?
  4. Где посмотреть аналогичные проекты?
Одиночное наследование — это всего лишь частный случай множественного наследования.
Re: Библиотека на C#
От: denisio_mcp  
Дата: 27.04.10 11:10
Оценка:
Здравствуйте, ZagSer168, Вы писали:

ZS>

Enterprise Lib и .NET 4 уже смотрел?
... << RSDN@Home 1.2.0 alpha 4 rev. 1088>>
Re: Библиотека на C#
От: MozgC США http://nightcoder.livejournal.com
Дата: 27.04.10 11:17
Оценка: 1 (1) :)
Здравствуйте, ZagSer168, Вы писали:

ZS>Как должен быть оформлен код? Сейчас в проге почти нет комментариев. Должны ли комментарии быть на английском языке?


На первом месте должен быть понятный сам код и названия классов и методов. Если рядом с вызовом метода вы собираетесь написать комментарий, то задумайтесь — может переименовать метод так, чтобы стало понятно без комментария? Комментарии очень желательно на английском. Представьте что вы скачали исходники библиотеки а там комментарии иероглифами.

ZS>Идентификаторы названы как в нотации явы (методы и свойства с маленькой буквы). Нужно ли переделывать под .NET стиль.


Скажем так, меня немного раздражает когда я встречаю C# библиотеки, у которых используется конвенция именования из java или еще хуже из Дельфи — т.е. типа TReportGenerator =)
Re[2]: Библиотека на C#
От: Аноним  
Дата: 27.04.10 12:20
Оценка:
Здравствуйте, denisio_mcp, Вы писали:

ZS>>

ZS>>Множественное наследование
_>Расскажи вкратце, как ты это собираешься делать, если не с помощью интерфейсов.

Именно с помощью интерфейсов. На C# по-другому никак. Смысл такой: на вход некоторого метода передаётся тип интерфейса, содержащего только свойства. Интерфейс рефлексией анализируется. Затем динамически с помощью Emit генерируется класс, реализующий этот интерфейс. Все свойства реализуются так же, как авто-свойства в C#, перед записью в свойство происходит несколько проверок и вызов события PropertyChanged. Вместо методов класса используются методы расширения. Если надо полиморфизм (виртуальные методы), то они делаются вручную в отдельных классах-синглтонах. Это по большей части уже реализовано.

_>Т.е. ты лично хочешь реализовать Software Transactional Memory или в применении к .NET — альтернативную .NET Framework enabled for STM?

_>Enterprise Lib и .NET 4 уже смотрел?

Нет ещё. Спасибо, посмотрю эти продукты
Re[3]: Библиотека на C#
От: ZagSer168 Ниоткуда https://x.u168.ru
Дата: 27.04.10 12:26
Оценка:
Предыдущее сообщения я написал
Одиночное наследование — это всего лишь частный случай множественного наследования.
Re[2]: Библиотека на C#
От: ZagSer168 Ниоткуда https://x.u168.ru
Дата: 29.04.10 05:51
Оценка:
Здравствуйте, MozgC, Вы писали:

MC>На первом месте должен быть понятный сам код и названия классов и методов. Если рядом с вызовом метода вы собираетесь написать комментарий, то задумайтесь — может переименовать метод так, чтобы стало понятно без комментария? Комментарии очень желательно на английском. Представьте что вы скачали исходники библиотеки а там комментарии иероглифами.


MC>Скажем так, меня немного раздражает когда я встречаю C# библиотеки, у которых используется конвенция именования из java или еще хуже из Дельфи — т.е. типа TReportGenerator =)


Да. Я тоже склоняюсь что лучше сразу дать понятные имена и использовать общепринятые способы оформления, чем потом мучиться, когда исправить уже поздно.
Одиночное наследование — это всего лишь частный случай множественного наследования.
Re[2]: Библиотека на C#
От: ZagSer168 Ниоткуда https://x.u168.ru
Дата: 29.04.10 05:58
Оценка:
Здравствуйте, denisio_mcp, Вы писали:

_>Т.е. ты лично хочешь реализовать Software Transactional Memory или в применении к .NET — альтернативную .NET Framework enabled for STM?


Посмотрел. STM сходно с тем, что я хочу. Однако, способ реализации мне не нравится:
1. Нет контроля за тем, какие данные используются внутри транзакции. В больших и сложных программах это приведёт к непреднамеренному участию в транзакции лишних переменных и частым "откатам" к предыдущему состоянию. Думаю, что нужно явно укзывать какие данные блокируются и как (чтение/запись).
2. В STM версионность памяти распространяется по-умолчанию на всё подряд, но в действительности это нужно делать только для объектов, хранящих состояние системы (это особенно важно при функциональном стиле программирования, когда переменных состояния мало). В моё случае версионность используется для декларативно описанных объектов.

_>Enterprise Lib


В ней из похожего нашёл только Validation. Но в Enterprise Lib Validation используется, в основном, для проверки пользовательского ввода. В моей библиотеке — для выявления логических ошибок в самой программе.
Одиночное наследование — это всего лишь частный случай множественного наследования.
Re[3]: Библиотека на C#
От: denisio_mcp  
Дата: 29.04.10 09:46
Оценка:
Здравствуйте, ZagSer168, Вы писали:

ZS>Посмотрел. STM сходно с тем, что я хочу. Однако, способ реализации мне не нравится:

ZS>1. Нет контроля за тем, какие данные используются внутри транзакции. В больших и сложных программах это приведёт к непреднамеренному участию в транзакции лишних переменных и частым "откатам" к предыдущему состоянию. Думаю, что нужно явно укзывать какие данные блокируются и как (чтение/запись).

Думаю не "всё подряд", а на те данные, которые действительно изменились в транзакции, дабы их можно было бы откатить. Если этого не делать — будет несогласованное состояние.
... << RSDN@Home 1.2.0 alpha 4 rev. 1088>>
Re[4]: Библиотека на C#
От: ZagSer168 Ниоткуда https://x.u168.ru
Дата: 30.04.10 06:37
Оценка:
Здравствуйте, denisio_mcp, Вы писали:

_>Думаю не "всё подряд", а на те данные, которые действительно изменились в транзакции, дабы их можно было бы откатить. Если этого не делать — будет несогласованное состояние.


В иногда нужно, чтобы некоторые данные не попадали под версионность. Казалось бы, это очень просто: меняй эти данные вне границ транзакции. Но часто это невозможно.
Пример: Отобразить динамически меняющийся список неких объектов. Для этого нужно: а)перечислить элементы списка; б) подписаться на событие изменения списка. Причём эти действия приходится выполнять в одной тразнакции, т.к. между ними список может измениться. Подписка на событие в .NET — это запись данных в делегат. Как вынести эту операцию за пределы транзакции непонятно. Усугубляет проблему то, что STM заменяет стандартные методы синхронизации, а не дополняет их.
И вообще в STM for .NET подписка на 1 событие из 2 разных потоков обязательно ведёт к откату текущей транзакции в одном из них.
Одиночное наследование — это всего лишь частный случай множественного наследования.
Re: Библиотека на C#
От: ZagSer168 Ниоткуда https://x.u168.ru
Дата: 18.08.10 09:55
Оценка:
Исправил нотацию на .NET.
Переименовал название классов и методов так, чтобы было понятно без чтения документации.
Написал XML-комментарии на английском.
Также реализовал распараллеливание проверки состояния. Тестовый код на 4-х ядерном компе стал работать в 3,6 раза быстрее.
Разместил пока тут: http://u168.webhop.net:81/Project/GetSelbat.ashx?mode=latest
Одиночное наследование — это всего лишь частный случай множественного наследования.
Re: Библиотека на C#
От: sergey_shandar США http://getboost.codeplex.com/
Дата: 15.12.10 13:51
Оценка:
Здравствуйте, ZagSer168, Вы писали:

ZS>Всё должно легко интегрироваться с существующими системами.

ZS>Наработки есть (клиент-серверная прога. клиент на C#, сервер на PHP/MySQL).
ZS>У меня возникли вопросы:

ZS>Каким хостингом кода можно воспользоваться?


Пробовал разные: sourceforge.net, developer.berlios.de, assembla.com, code.google.com. Для .NET проектов рекомендую codeplex.com.
getboost.codeplex.com
citylizard.codeplex.com
hosting open_source
Re[2]: Библиотека на C#
От: Haem  
Дата: 16.12.10 04:37
Оценка:
Здравствуйте, sergey_shandar, Вы писали:

_>Здравствуйте, ZagSer168, Вы писали:


ZS>>Всё должно легко интегрироваться с существующими системами.

ZS>>Наработки есть (клиент-серверная прога. клиент на C#, сервер на PHP/MySQL).
ZS>>У меня возникли вопросы:

ZS>>Каким хостингом кода можно воспользоваться?


_>Пробовал разные: sourceforge.net, developer.berlios.de, assembla.com, code.google.com. Для .NET проектов рекомендую codeplex.com.


Можете уточнить, на каких критериях основан ваш выбор?
Re[3]: Библиотека на C#
От: sergey_shandar США http://getboost.codeplex.com/
Дата: 16.12.10 23:36
Оценка:
Здравствуйте, Haem, Вы писали:

ZS>>>Каким хостингом кода можно воспользоваться?


_>>Пробовал разные: sourceforge.net, developer.berlios.de, assembla.com, code.google.com. Для .NET проектов рекомендую codeplex.com.


H>Можете уточнить, на каких критериях основан ваш выбор?


То что вспомнил:

Объективные:
  1. Очень много других .NET проектов хостятся на codeplex;
  2. Cборы от рекламы идут разработчикам проектов;
  3. Поддержка Mercurial.

Субъективные:
  1. Простой понятный дизайн.

Некоторые причины могут быть историческими, например, с sourceforge на berlios.de я перешел тогда, когда berlios.de поддерживал Subversion, а sourceforge еще нет.
getboost.codeplex.com
citylizard.codeplex.com
hosting mercurial
Re[2]: Библиотека на C#
От: ZagSer168 Ниоткуда https://x.u168.ru
Дата: 27.12.10 10:59
Оценка:
Здравствуйте, sergey_shandar, Вы писали:

_>Здравствуйте, ZagSer168, Вы писали:


ZS>>Всё должно легко интегрироваться с существующими системами.

ZS>>Наработки есть (клиент-серверная прога. клиент на C#, сервер на PHP/MySQL).
ZS>>У меня возникли вопросы:

ZS>>Каким хостингом кода можно воспользоваться?


_>Пробовал разные: sourceforge.net, developer.berlios.de, assembla.com, code.google.com. Для .NET проектов рекомендую codeplex.com.


Спасибо, посмотрю.
Одиночное наследование — это всего лишь частный случай множественного наследования.
Re: Библиотека на C#
От: ZagSer168 Ниоткуда https://x.u168.ru
Дата: 27.12.10 11:27
Оценка:
Основные изменения:


Последний ночной билд: http://u168.webhop.net:81/Project/GetSelbat.ashx?mode=latest
Одиночное наследование — это всего лишь частный случай множественного наследования.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.