Codepedia :)
От: Зверёк Харьковский  
Дата: 25.09.05 14:09
Оценка: 30 (5) +3
Задела меня за живое фраза "И тогда создание поистине всемирных библиотек кода на этом языке можно сделать по принципу Wikipedia."
Автор: iZEN
Дата: 25.09.05


Пока ходил на базар за картошкой — сформулировал, как это могло бы выглядеть. Решил поделиться — авось кому польза будет
Дисклямер: в нижеследующем тексте я не учитываю возможных технических ограничений; исхожу из того, что сервер ориентирован на 1 язык (из мейнстримовых).

Цель сайта — собрать большую библиотеку полезных code snippets (кусочков кода), могущих легко быть re-used.

Единица хранения
Один snippet — это некий набор единиц языка (классов, функций), не зависящий от сторонних библиотек (кроме стандартной библиотеки данного языка), служащий однозначно формулируемой цели, и могущий быть использованным "как есть", без переделки.

Поскольку однозначного имени (по которому любой программист его найдет) snippet'у дать нельзя, ему дается краткое описание и набор тегов (соответственно, поиск сниппета на сайте — отбор по тегам).

Редактирование snippets
Редактировать сниппет может кто угодно.
Для редактирования сниппета сайт должен предоставлять полноценный редактор кода (подсветка, автоотступ, сворачивание веток, autocomplete стандартной библиотеки).
Необходимо ввести сниппет и юнит-тест на него (код выполняющий проверку корректности сниппета и одновременно — демонстрацию его возможностей).
После этого сервер выполняет проверку.
Проверяется: синтаксис и компилируемость кода, стиль (на сервере существуют некоторые правила, типа длины имен переменных и прочая); выполняется юнит-тест. Результатом выполнения юнит-теста является список тестов, которые код прошел/не прошел, а так же (в идеале) покрытие кода тестами (какие классы/функции в выполнении юнит-теста задействованы не были).

Код, не прошедший проверку на компилируемость, запостить нельзя. Код, не прошедший критические тесты, запостить нельзя. Код, не прошедший некритические тесты, запостить можно, в каталоге он будет показан как "сниппет такой-то — проходит 80% тестов".

Поиск и выбор snippets
Поиск идет по тегам и просто через поисковую систему. В списке отображается сниппет, его краткое описание, покрытие юнит-тестами (рейтинг?). При просмотре сниппета можно посмотреть его код, юнит-тест, результат выполнения юнит-теста, автоматически сгененрированное summary (только definitions). При этом сайт должен поддерживать простой рефакторинг — единожды задав в своем профайле свои соглашения по кодированию (отступы, переносы, case переменных и прочая), дальше все сниппеты вижу отформатированными по этим соглашениям. Просматриваемый сниппет можно загрузить (в смысле, соответствующий исходник без html'я), отредактировать, отредактировать только юнит-тест (к примеру, добавить еще один тест, демонстрирующий некорректность кода, или нехватающие в нем фичи).

Административное устройство
По всей видимости, кроме модераторов (чья функция — как всегда — пресекать хулиганство и вандализм) нужны maintainers (добровольцы-энтузиасты), которые станут более-менее регулярно просматривать новые и измененные сниппеты, выбрасывать никому-не-нужные, рефакторить плохо-написанные и т.п.

На закуску — проблемы реализации
Крутейшая среда с рефакторингом и веб-интерфейсом, серверная, выдерживающая дикие нагрузки — это не шубу в трусы заправить. Других проблем не видать Возможно, нагрузку можно каким-то образом перенести на клиента (скачивается программа, в которую уже встроен редактор; каким-то образом полагаться на установленный у клиента компилятор, и т.п.). JetBrains, ау?!

Dixi, вроде как.
FAQ — це мiй ай-кью!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.