我正在将一个库从 C++ 移植到 Java。这是我第一次,我不确定“移植”的真正含义是什么?具体来说,如果作者将变量命名为“A”,我认为更好的名称是“B”。方法、类和命名空间也是如此。另外,如果我认为可以做得更好怎么办?移植是否意味着我应该尽可能多地保留原始代码精神,但仍然允许自己自由地改进东西?
谢谢
我正在将一个库从 C++ 移植到 Java。这是我第一次,我不确定“移植”的真正含义是什么?具体来说,如果作者将变量命名为“A”,我认为更好的名称是“B”。方法、类和命名空间也是如此。另外,如果我认为可以做得更好怎么办?移植是否意味着我应该尽可能多地保留原始代码精神,但仍然允许自己自由地改进东西?
谢谢
它不一定必须是一对一的翻译(在许多情况下,它不能完成)。移植只是用不同的语言/环境/等重写一个软件。有时移植需要你调整并以不同的方式实现它们,所以我认为你帖子的最后一句话几乎抓住了事情的要旨。
我认为这相当于将一本书从英语翻译成另一种语言。在某些情况下,需要根据如何表达源材料的意图/功能进行判断。
当从系统 A 移植到系统 B 时,世界就是你的牡蛎。如果您认为这是一种改进,您几乎可以改变任何东西。唯一需要注意的是在处理接口时。比如说,你正在移植一个 API,例如,命名外部可用的方法不是一个好主意,因为这会破坏一些东西。跨多个类跟踪命名问题是一大难题。
作为一个从一种语言移植到另一种语言的人,我建议首先坚持实现细节。一个好的工程原则是随时改变一件事。这样,当事情没有按预期运行时,您就会知道应该归咎于您的实现,而不是一些愚蠢的命名问题。当您确实要重命名时,我想这是不言而喻的,要非常小心并经常备份。这是软件版本控制可以为您节省数小时时间的一种情况。
当将库从一个平台“移植”到另一个平台时,您就是在移植功能。您不是在移植代码风格。这不像在文学中,一个人必须保持作品的风格,记住隐喻和抑扬格五音步或你有什么。