LINUX.ORG.RU

Как сделать Perl не write-only?


0

0

Очень люблю этот язык программирования, буквально кайфую от написания кода на нём, но после написания проекта встаёт острая проблема поддержки его, развития. Через месяц я с трудом могу понять что я написал, другим программистам не легче.

Однако, я не могу себя остановить: если я вижу, что какой-то участок кода можно написать «красиво» или «короче» - я его именно так и пишу...

Быть может есть какие-то средства для более грамотного программирования, которые бы позволяли сделать код более читаемым?

Как вы с этим справляетесь?

// strict и комменты юзаю.

★★★★★

главное хорошо спроектировать, в деталях всегда можно разобраться

gavv
()
Ответ на: комментарий от KblCb

Например что-нибудь такое:

print "> ";
my $file = <>;
chomp $file;

my @A = `c:\\dos\\bc\\bin\\tasm.exe \/t $file`;
my @l = `c:\\dos\\bc\\bin\\tlink.exe \/t $file`;

print @A, @l;

++$#A+$#l&&<>||sleep print"[+] Done!\n"
Компилит + линкует tasm'овский файл и в случае успеха пишет «[+] Done!\n», ждёт энтера.

helios ★★★★★
() автор топика

Подробное комментирование кода спасут отца русского программирования :)

Kakerlak
()
Ответ на: комментарий от helios

А, не. В случае успеха он выведет «[+] Done!\n» и подождёт секунду, а в случае неудачи будет ждать энтер.

helios ★★★★★
() автор топика

> Быть может есть какие-то средства для более грамотного программирования, которые бы позволяли сделать код более читаемым?

Есть, это python

name_no ★★
()
Ответ на: комментарий от helios

> ++$#A+$#l&&<>
До такого сжатия и украшения кода я ещё не доходил. Может быть, именно эти моменты и нужно особенно подробно комментировать?

AITap ★★★★★
()
Ответ на: комментарий от AITap

>> ++$#A+$#l&&<>

До такого сжатия и украшения кода я ещё не доходил. Может быть, именно эти моменты и нужно особенно подробно комментировать?


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

vahvarh ★★★
()
Ответ на: комментарий от helios

Ну вот. Всё ясно. Нужно просто написать стандарт кодирования в котором запретить ромб, обратные кавычки и написание функций и операторов слитно с аргументами. Вообще тут явно требуется смещение точки сборки: код не станет хуже если использовать STDIN, пробелы и system. А зачем вывод тасма собирается в массив?

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

> А зачем вывод тасма собирается в массив?

Для подсчёта строк вывода. tasm выводит 0 строк при удачной компиляции, а tlink выводит 1 строку (копирайт) при удачной линковке.

Собственно так я и проверял на «удачность» сборки.

helios ★★★★★
() автор топика
Ответ на: комментарий от vahvarh

> Я на перле пишу с классами и прочим, мегебайты кода выглядят вполне читаемыми.

Тогда к вам вопрос: юзаете ли вы Moose или же обходитесь стандартными средствами для ООП. Используете ли всяческие модули для поддержки MVC?

helios ★★★★★
() автор топика
Ответ на: комментарий от helios

Стандартные средства, без Moose.

Модули поддержки MVC не использую и даже затруднюсь сформулировать что обычно подразумевается под этим.

Могу только сказать что разбиваю логику и представление, а вот отображение строк базы в объекты (вроде как DBIx) считаю злом.

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

vahvarh ★★★
()
Ответ на: не по теме от shelA

> тасм с тлинком еще жив?!

В университетах — да.

Если не секрет с какой целью из изаешь?


Захватываю мир! ^U программирование под DOS.

helios ★★★★★
() автор топика
Ответ на: комментарий от helios

> tasm выводит 0 строк при удачной компиляции, а tlink выводит 1 строку (копирайт) при удачной линковке.

А коды завершения не осилили они или ты?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> А коды завершения не осилили они или ты?

Хм... Ни разу там не видел кодов завершения... Всё, что возвращает программа (tasm / tlink) - просто текст «вот на такой строке вот такая вот фигня».

Думаю, там их нет, ибо задумывалось на юзание автономное (не из каких-то левых средств... да и правых - тоже).

helios ★★★★★
() автор топика
Ответ на: комментарий от helios

> Думаю, там их нет

Думаю, что там они есть. И точно знаю, что в {Turbo,Borland} C есть make, что как бы намекает на то, что инструменты таки имеют коды возврата. А еще я точно знаю, что это легко ппроверить :)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> А еще я точно знаю, что это легко ппроверить :)

на полуслове не останавливайся. Как?

helios ★★★★★
() автор топика
Ответ на: комментарий от helios

>> А еще я точно знаю, что это легко ппроверить :)

на полуслове не останавливайся. Как?

Ахренеть. Я перла не знаю, напишу на shell (badfile.asm - это файл, на котором tasm выдает ошибку, goodfile.asm - тот, который компилируется успешно):

tasm badfile.asm || echo «FAIL»

tasm goodfile.asm && echo «OK»

Если эти 2 команды дают вывод FAIL и OK, tasm возвращает код завершения, следующий обычным соглашениям.

P.S. ах да, еще можно посмотреть в документации, но мы же Ъ-джыдаи, правда?

tailgunner ★★★★★
()
Ответ на: комментарий от helios

>> tasm goodfile.asm && echo «OK»

http://i45.tinypic.com/2wm0yso.png

Ты не понял, что надо было перевести с Bourne shell на Perl или язык command.com? Или не знаешь, что такое errorlevel?

Просьба генерировать вариант столь же искромётно!

Уел старика, да.

tailgunner ★★★★★
()
Ответ на: комментарий от helios

А разве cmd.exe поддерживает эти милые шелловские няшки? Там вроде как-то поуродливее надо делать. Баша нет? Тогда читайте читайте доки перла про system.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

> А разве cmd.exe поддерживает эти милые шелловские няшки

COMMAND.COM если что :)

Вообще, задачка решена если что...

helios ★★★★★
() автор топика
Ответ на: комментарий от proud_anon

Ну легче как раз перлом проверить, чем дергать ДОСовские доки, имхо.

oh
()
Ответ на: комментарий от helios

Ну, в принципе понял все, кроме `&&<>'. Т.е., реально проблема лишь вот в этой строчке.

oh
()
Ответ на: комментарий от vahvarh

ИМХО, без Moose это какой-то мазохизм.

а вот отображение строк базы в объекты (вроде как DBIx) считаю злом.

кому как

oh
()

Moose очень хорош,особенно в плане читаемости.
Ну рекомендация стандартная - это не делать велосипеды,а искать решения на search.cpan.org или на github.com
От етого стоит отказаться ++$#A+$#l&&<>|| - я себя от этого удерживаю ;)
Ну да еще можешь в своей pm( perl mongers) поспрашивать
и все ИМХО.

pinachet ★★★★★
()
Ответ на: комментарий от pinachet

> не делать велосипеды,а искать велосипеды на search.cpan.org или на github.com

fxd.

LamerOk ★★★★★
()

> Очень люблю этот язык программирования, буквально кайфую от написания кода на нём, но после написания проекта встаёт острая проблема поддержки его, развития.

Ничего, это с возрастом пройдёт. Пока же попробуй хотя бы прислушиваться к рекомендациям Perl::Critic.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.