乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 47|回复: 11

[编程交流] LISP程序行计数器

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:59:07 | 显示全部楼层 |阅读模式
有人知道一个实用程序可以计算LISP程序中的代码行吗?一种忽略注释,只计算实际代码行的方法。
 
这就引出了我的另一个问题。你们什么时候会认为LISP程序太大或太臃肿?我写的一些模块接近1000行。我经常想知道是否应该把它们分成不同的文件。
 
即使是最大的一个也会在几秒钟内执行。从单击Excel中的大“GO”按钮到绘制完整图形的总时间从瞬间到大约10秒不等,具体取决于用户的机器。我担心代码变得太难管理,因为所有的IF语句都需要覆盖所有的设计选项。
 
我有一个unix(FreeBSD)服务器,我想我可以使用sed编写一些shell脚本来删除文件中的注释,然后只计算剩余的行。但我希望有人以前曾报道过这一领域。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
310
发表于 2022-7-6 08:08:55 | 显示全部楼层
我会用这样的方式来读取文件。如果有任何意见
;| 评论|;你会得到一个不准确的数字。如果这是一个问题,我可以稍后为您修改。
 
 
  1. (defun readfile ( filename / _l _line )
  2. (setq filename (open filename "r"))
  3. (while (setq _line (read-line filename))
  4.    (if
  5.      (not
  6.        (or (eq "" _line)
  7.          (wcmatch _line ";*")
  8.        )
  9.      ) (setq _l (cons _line _l))
  10.    )
  11. ) (close filename)
  12. (reverse _l)
  13. )

 
  1. (length (readfile "c:\\filename.lsp"))

 
 
 
我有一个工具。lsp有6892行,我没有问题
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:10:26 | 显示全部楼层
做一些简单的事情怎么样:
 
  1. (defun c:CountLISPLines ( / file line lines )
  2.    (if
  3.        (and
  4.            (setq file (getfiled "" "" "lsp" 16))
  5.            (setq file (open file "r"))
  6.        )
  7.        (progn
  8.            (setq lines 0)
  9.            (while (setq line (read-line file))
  10.                (if (not (or (eq "" (setq line (vl-string-trim "\t " line))) (wcmatch line ";*")))
  11.                    (setq lines (1+ lines))
  12.                )
  13.            )
  14.            (close file)
  15.            (princ (strcat "\nFile contains " (itoa lines) " lines of code."))
  16.        )
  17.    )
  18.    (princ)
  19. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:16:17 | 显示全部楼层
比尔:每次你启动一个新程序时,都会重复1000行代码吗?作为调用自动加载库lisp的单行代码,20行代码会更好吗?如果你回答是的,那么可能是时候看看库了,我参与了一个商业产品,每个程序的前几行代码都是相同的,层操作总是调用库函数,因为我们有一个智能层管理器,没有使用输入或硬编码。大约150多个口吃,而不是一个大口吃。正如您所说,加载时间从来都不是问题。
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:26:09 | 显示全部楼层
谢谢李和比格尔,
 
我运行了代码,在最新的程序中得到了2330行代码。当然,我们每个人的节目风格都不一样。我总是试着在每一行上只保留一个命令,只有像TRIM这样的命令,我才开始把事情展开,这样我就可以看到我在做什么,然后进行调试。大多数时候,我把PROGN和IF语句的最后一个括号放在它们自己的行上。事实上,我允许IDE格式化我的代码,哇,它曾经传播过东西。看起来不错,但它也变得很难调试,因为它确实将文本分散在许多行上。
 
我编写的代码对于每个产品线都是非常定制的,虽然绘制平面图或绘制板截面等功能类似,但总有足够的差异,需要编写新代码。当我可以的时候,我试着使用变量,这样我可以把它们传递给函数,这让事情变得更容易。但是,用户选择添加或不添加所有不同的选项,很多时候可以简单地绘制一个选项,但如果将其与另一个选项一起选择,那么两组代码都会不同。许多if和or。我仍然相信,其中一些可以放在一个单独的文件中,在需要的时候,并且只有在需要的时候,才可以从程序中调用。例如,我使用的产品使用各种弹簧和减震器来帮助提升和关闭地板,所有不同配置的代码使这些功能成为最长的功能。不过,有时这些选项并没有被请求,如果不需要的话,最好将这些功能完全排除在主程序之外。我已经将这一原理应用于所使用的块,现在,我只在需要时加载块,而不是每个图形都包含所有200多个块。同样,这似乎并没有加快速度,但结束文件的大小要小得多。信不信由你,增加文件大小的最大因素是我从Excel中复制的OLE对象。但用户喜欢这一点,所以这不是一个可以消除的选项。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 08:27:08 | 显示全部楼层
我还是喜欢Ally
 
http://www.wascotech.com/products.html
 
不幸的是,它不会在64位机器上运行
 
 
至于膨胀,100KB似乎总是对我来说是最大的老丁和执行。至于可读性和组织,这更多地取决于代码的注释和格式。我的0.02美元-David
085910yyo6n80shfyyghnn.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:32:06 | 显示全部楼层
比尔只是在2300行中问了一个问题,即从菜单或键盘上调用了多少个实际的单独程序。还是只有一个命令
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:41:44 | 显示全部楼层
不容忽视的是,这种计算的结果很大程度上受到个人格式风格的影响。可能更好的比较方法是在文件副本上应用VisualLisp编辑器的自动格式化,然后计算行数。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:45:08 | 显示全部楼层
当然,要走的路!就我个人而言,这是我多年前通过艰苦的方式学到的。
当涉及到代码维护时,它也会让你的生活变得更加轻松。
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:52:28 | 显示全部楼层
 
我想答案只有一个。用户从Excel电子表格开始。一些用户对如何使用AutoCAD一无所知。但他们可以在Excel电子表格中输入他们想要的部件尺寸和特征的数据。excel文件进行了大量的结构计算,并在其中一个工作表上进行了总结。同一个excel文件中的VBA程序将用户的输入以及多个计算结果写入一个文本文件。然后加载AutoCAD和LISP程序。给出的唯一命令,也是一个自动命令,是执行LISP程序。LISP程序中的所有操作和命令必须在没有任何用户输入的情况下进行,我将重复这一点。否则,我们就无法完成整个自动化过程。我们最终将开发一个网站界面,该界面将允许在线用户在不需要销售或工程团队请求的情况下准备他们的图纸。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 20:37 , Processed in 0.420418 second(s), 74 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表