Questions tagged «source-code»

源代码是使用某种人类可读的计算机语言(通常是文本)编写的任何计算机指令(可能带有注释)的集合。

7
在旧版代码库中,我如何快速找出正在使用的和未使用的?
我被要求评估似乎是一个实质性的旧代码库,作为签订维护该​​代码库合同的先驱。 这不是我第一次遇到这种情况。在目前的情况下,该代码适用于相当引人注目的和相当高负载的多玩家游戏站点,一次可支持至少数千名在线玩家。与许多此类站点一样,该站点是前端和后端技术的组合。 从内向外看,站点结构是一团糟。到处都有后缀为“ _OLD”和“ _DELETE”的文件夹。许多文件夹似乎毫无用处,或者具有非常神秘的名称。即使在看起来合法的文件夹中,也可能有任意数量的旧的,未使用的脚本摆在附近。不仅如此,即使在其他情况下运行的脚本中,无疑也有许多已失效的代码节(紧迫的问题要少得多)。 这是从现有维护者到站点的原始开发者/维护者的移交。可以理解,在这种情况下典型的情况是,任职者除了与合同和法律要求将移交给新当选的维护人员的合同和法律要求外,与移交无关。因此,从现有运营商那里提取有关现有站点结构的信息完全是不可能的。 进入代码库的唯一想到的方法是从站点根目录开始,然后慢慢地但一定要在链接的脚本中导航……这可能有数百种正在使用中,有数百种没有使用。鉴于该站点的很大一部分都位于Flash中,因此这甚至不那么简单,因为尤其是在较旧的Flash应用程序中,指向其他脚本的链接可以嵌入二进制文件(.FLA)中,而不是文本文件(.AS / ActionScript)中。 因此,我想知道是否有人对如何评估整个代码库的可维护性有更好的建议。如果有某种方法可以查看网络服务器操作系统(我可以访问)上文件访问频率的图表,那将是很棒的,因为这可能会提供一些洞察力,让您了解哪些文件最关键,即使不是能够删除那些从未使用过的文件(因为某些文件每年只能使用一次)。

11
将源代码移交给客户
我为一个客户制作了两个iPhone应用程序,今天被要求交出源代码,以便他们在需要时进行维护。到目前为止,还没有讨论过任何代码问题。 是否有“常规”做法? 另外,这应该以哪种方式影响价格?

3
通过源代码访问来管理内部NuGet软件包
我们有很多内部库,我们希望在公司内部的项目之间共享。这些是一些要求: 库资源存储在与最终项目分开的存储库中 最终项目包括通过NuGet提供的库 在进行最终项目时,必须有可能轻松检查任何给定库的源代码 设置我们的私有NuGet存储库不是问题,但是管理源代码是有问题的。我们试图通过暴露源服务器的来源和它还挺作品,但并不完全:VS下载源在调试外部代码,而不是当你尝试导航到定义/实施。基本上,您只能在调试时使用源代码,这不是我们所需要的。 因此,问题是: 有哪些方法可以提供对内部库源代码的访问权限,而无需将代码放在同一存储库/解决方案中 有没有办法设置Symbol服务器/ NuGet feed组合,以便VS使用符号进行导航,而不仅仅是调试? 选择使用ReSharper /其他加载项。

11
为什么使用System.out.println()这么糟糕?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 当然,对错误消息或警告使用日志记录框架非常有用。但是有时候如果我想在短时间内尝试一些新的东西,我会使用System.out.println()。 使用System.out.println()进行快速测试真的很糟糕吗?

10
}后代码块末尾的“ //…”注释-好还是坏?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我经常看到这样的评论: function foo() { ... } // foo while (...) { ... } // while if (...) { ... } // if 有时甚至 if (condition) { ... } // if (condition) 我从不了解这种做法,因此也从未应用过。如果您的代码很长,以至于您需要知道结尾}是什么,那么也许您应该考虑将其拆分为单独的函数。而且,大多数开发人员工具都可以跳转到相应的括号。最后,对我来说,最后一个明显违反了DRY原则;如果您更改条件,则必须记住也要更改注释(否则可能会使维护者甚至您变得混乱)。 那么人们为什么要使用它呢?我们应该使用它,还是不好的做法?

6
是否需要在方法签名中为每个参数编写一个Javadoc注释?
我们团队中的一位开发人员认为,有必要为方法签名中的每个参数编写一个Javadoc注释。我认为这不是必要的,实际上我认为这甚至是有害的。 首先,我认为参数名称应具有描述性和自我记录性。如果您的参数的用途不是很明显,那么您可能做错了。但是,我确实知道,有时不清楚参数的用途,因此在这种情况下,应该编写一个Javadoc注释来解释该参数。 但是我认为没有必要对每个参数执行此操作。如果该参数的作用已经很明显,则javadoc注释是多余的;您只是为自己创造了额外的工作。此外,您还为需要维护代码的任何人创建了额外的工作。方法会随着时间而变化,维护注释几乎与维护代码一样重要。您有多少次看到“ X是Y导致Z原因”这样的注释,只是看到该注释已过时,实际上该方法甚至不再使用X参数?它总是发生,因为人们忘记了更新评论。我认为,误导性评论比根本没有评论更具危害性。因此存在过度注释的危险:通过创建不必要的文档,您可以 但是,我尊重团队中的另一个开发人员,并接受他也许是对的,但我错了。这就是为什么我会向其他开发人员提出您的问题:确实有必要为每个参数编写一个Javadoc注释吗?在此假设该代码是我公司内部的代码,任何外部方都不会使用。

8
与使用DB相对,何时将一个实际数据值硬编码到代码中?
对我来说,一个长期存在的问题是:何时将数据(实际值)存储在数据库表中,何时将其正确存储在代码中? 无法达成共识的通常是这样的(*): 如果它是单个变量或简单结构,或者是几个值的数组,则将数据放在代码中。 [* 共识已在评论和答案中进行了辩论,但基本上我希望有一个前提来启动这个问题,因此随时可以提出挑战并加以改进 ] 例: $number = 44; $colors = array("blue", "yellow", ... "mauve"); 如果它具有数百行以上相同类型的数据,请使用数据库。 但是似乎有一个灰色地带。那么不清楚的情况又如何呢?做出决定时需要注意哪些注意事项和因素? 示例: 假设您的公司使用10-15种不同类型的电机框架,它们可以表示为“ 412T”。您大约有30个,并且它们很少更改。您可以为这些数据库创建数据库表,也可以在数据库中对其进行硬编码。在这种情况下,电动机是静态的,物理的东西,不太可能经常改变。 将它们保留在代码中会使它们受到源代码控制,而在数据库中,通常不会跟踪数据库更改。但是将它们保存在数据库中可以从数据中释放(分离)代码。 我可以使用的另一个(实际)示例是我的这个问题:https : //stackoverflow.com/questions/26169751/how-to-best-get-the-data-out-of-a-lookup-table(当前为48行选项数据)。


14
如何找出源代码中的拼写错误是否是一个严重的问题?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我发现每天在我们的代码库中看到的拼写错误非常令人不安,我将重现一个非常简短但具有代表性的示例: ArgumnetCount Timeount Gor message from queue 不幸的是,这绝不仅限于一个人。我们的团队中有很多非英语母语人士对此做出了贡献,但是我也可以指出一些最糟糕的拼写错误给我们出生,成长为美国人的软件架构师。 这些信息甚至可以在电子邮件,演示文稿,文档中找到,无论我们在软件开发公司中拥有任何书面信息。 我想知道如何确定是否是一个严重的问题? 我一直很担心遇到这些拼写错误,但是我自己的个人官方政策是,我们没有为正确地拼写事情付费,而是为完成事情而付费,因此在公司内部,我从未真正批评任何人。但是我已经和我的一些密友提出了这个问题,但从未永远解决。

9
带代码去面试?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 将印刷的代码或USB上的代码进行采访是个好主意吗?如果是这样,我应该携带哪种代码。我应该避免执行大型项目,而只显示一些小片段来炫耀我的技能吗?

2
您如何更改intellij自动格式化代码的方式?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 IntelliJ对Javascript代码进行了一些奇怪的格式化,而我正在尝试弄清楚如何使其停止格式化。每当我将jQuery函数链接在一起时,它就会缩进自动创建的代码,例如: $('#something').focus(function() { /* Do some stuff */ }).blur(function() { /* this is where the cursor and closing braces end up */ }) 我希望它看起来像这样: $('#something').focus(function() { /* Do some stuff */ }).blur(function() { /* cursor and closing braces indented normally */ }); 我该如何更改?

7
开发方法:用户界面输入或域模型输出?
尽管我从未使用Smalltalk交付过任何东西,但我短暂的使用时间肯定已经留下了印记。描述体验的唯一方法是按原样应有的MVC。本质上,对您的应用程序而言,所有繁重的工作都是在业务对象中完成的(如果您愿意,也可以在域模型中完成)。标准控件以某种方式绑定到业务对象。例如,一个文本框被映射到一个对象的字段(该字段本身是一个对象,因此很容易做到)。一个按钮将映射到一个方法。所有这些都是通过非常简单自然的API完成的。我们不必考虑绑定对象等。它可以正常工作。 但是,在许多更新的语言和API中,您不得不从外部进行思考。首先使用C ++和MFC,现在使用C#和WPF,Microsoft已将其开发人员吸引到GUI生成器上,在其中可以通过实现事件处理程序来构建应用程序。Java Swing开发并没有什么不同,只有您自己编写代码以实例化表单上的控件。对于某些项目,甚至可能永远都没有域模型-只是事件处理程序。我的大部分职业都在使用该模型。 每种方式都会迫使您以不同的方式思考。使用Smalltalk方法,您的域很聪明,而GUI却很笨。使用默认的VisualStudio方法,您的GUI会很聪明,而域模型(如果存在)则很贫乏。 与我合作的许多开发人员看到了Smalltalk方法的价值,并试图将这种方法引入VisualStudio环境。WPF具有一些动态绑定功能,这使其成为可能。但是有局限性。不可避免地,属于域模型的某些代码最终会出现在GUI类中。 那么,您采用哪种方式设计/开发代码?为什么? GUI首先。用户交互至关重要。 域优先。在我们将UI放到系统上之前,我需要确保系统是正确的。 两种方法都有优点和缺点。Domain模型适合在那里放置水晶大教堂和空中馅饼。GUI非常适合快速且肮脏的(有时确实很肮脏)。 还有一个额外的好处:如何确保代码可维护?

5
在新公司开始编码所需的时间[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我是一名软件工程师已有4年了,而我只是第一次更换公司。 Company使用结对编程进行工作,已经有3天了,我什至无法编写一行代码。这让我感到沮丧,因为我在以前的公司工作效率很高。 代码库很大,他们使用的是我不熟悉的5-6种语言/工具,例如rspec,halm,jasmine等。但是,我仍然感觉很糟糕。 这个周末,我创建了UML以更好地了解应用程序,但是我仍然猜想我本周将无法编写大量的代码。 这正常吗? 当您换工作并潜入使用不熟悉的语言/库编写的大型代码库时,您会有什么经验? 当然,我并不是在要求确切的时间,但是过去的经验或完成该过程的东西会很棒。 顺便说一句,我已经阅读了以下问题与解答, 如何进入大型代码库? /programming/215076/whats-the-best-way-to-become-familiar-with-a-large-codebase /programming/214605/the-best-way-to-familiarize-yourself-with-an-inherited-codebase 更新 所有很棒的建议!我刚下班,我干了很多工作! 关于结对编程: 通常,他们编写代码,而我力争不错过任何一秒钟!如果我尝试编写代码,我知道这将永远花光,因为我什至不知道应该编辑哪些文件,但是除此之外,正如我所说,它们使用的是6-7种语言/框架,熟悉并同时学习所有这些语法并非易事。 公司为工程师准备的情况: 我不能说他们组织得很好,他们有点希望我立即开始编写代码。 做笔记,积极主动: 当他们编写新命令/或任何有关数据模型的内容时,我总是记笔记。我的同龄人非常聪明善良,我想问很多问题,有时甚至是愚蠢的问题。 这很常见吗?: @Telastyn,感谢您的回答,这让我感觉好一些。看来我的问题并不少见,但是在我从事这项工作之前我确实很有生产力,现在我真的觉得自己没用,也不聪明。 我希望我能尽快开始解决错误/实现问题。 关于他们使用的框架/语言: 我真的很诚实,我没有说我知道我实际上不知道的东西。但是我没想到会有那么多不同,而且自从我接受报价的那一天开始工作以来,我没有时间做准备。 @Southpaw Hare,非常感谢您分享您的经验。你是绝对正确的。无法保证我将学习所有这些知识,但我正在尝试。最后,很难一次学习所有语法,我认为这也是主要问题。因为我知道该语言,所以我可以很好地在ruby代码中导航,而且由于浏览器检查器的帮助,我可以在js代码中导航,但是问题是使用我不知道的框架/语言编写了实际代码。

11
版本控制注释-过去或现在时[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 对于版本控制注释,其他用户会做什么/推荐吗?过去或现在时? 即 将 x 更改为y。 要么 将 x 更改为y。

5
如何为初学者理解Linux内核源代码?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我是一名对内存管理感兴趣的学生,尤其是linux内核的页面替换组件。 有什么不同的指南可以帮助我开始理解内核源代码? 我曾尝试阅读Mel Gorman 的《了解Linux虚拟内存管理器》和Cesati和Bovet的《了解Linux内核》这本书,但是他们没有解释代码中的控制流程。他们仅最终解释了所使用的各种数据结构以及各种功能执行的工作。这使代码更加混乱。 我的项目涉及在主流内核中调整页面替换算法,并针对一组工作负载分析其性能。有没有一种易于理解的Linux内核(如果不是linux-2.6.xx内核)?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.