Questions tagged «source-code»

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

10
为什么我们在设计模式中需要这么多的类?
我是大四学生中的初级开发人员,并且在理解他们的思维和推理方面付出了很多努力。 我正在阅读域驱动设计(DDD),无法理解为什么我们需要创建这么多的类。如果采用这种设计软件的方法,我们最终将得到20-30个类,最多可以替换为两个文件和3-4个函数。是的,这可能很麻烦,但是它更具可维护性和可读性。 每当我想查看某种EntityTransformationServiceImpl功能时,都需要遵循许多类,接口,它们的函数调用,构造函数,它们的创建等等。 简单的数学: 60行伪代码与10类X 10(假设我们有完全不同的逻辑)= 600行杂乱代码与100类+更多包装和管理它们;不要忘记添加依赖项注入。 读取600行凌乱代码=一天 100节课=一周,仍然忘记哪个课什么时候 每个人都说它易于维护,但是为什么呢?每次添加新功能时,都会添加五个带有工厂,实体,服务和值的类。我觉得这种代码的运行速度比凌乱的代码要慢得多。 假设,如果您在一个月内编写了50K LOC混乱代码,则DDD内容需要进行大量审查和更改(我都不介意在两种情况下进行测试)。一个简单的添加可能需要数周,甚至更多。 一年之内,您编写了很多混乱的代码,甚至可以多次重写它,但是使用DDD样式,您仍然没有足够的功能来与混乱的代码竞争。 请解释。为什么我们需要这种DDD样式和许多模式? UPD 1:我收到了很多不错的答案,请大家在某处添加评论或使用阅读列表的链接编辑您的答案(不确定从哪开始,DDD,设计模式,UML,代码完成,重构,实用性等。) ..那么多好书),当然还有顺序,这样我就可以像你们中的一些人一样开始理解并成为高级。

13
我应该重构标记为“请勿更改”的代码吗?
我正在处理一个相当大的代码库,并且给了我几个月时间来重构现有代码。需要进行重构过程,因为很快我们将需要在产品中添加许多新功能,而就目前而言,我们将无法在不破坏其他功能的情况下添加任何功能。简而言之:我们许多人在他们的职业生涯中都看到过的凌乱,庞大,错误的代码。 在重构过程中,我有时会遇到类,方法或代码行,它们的注释如下: 设置了超时时间,以便给模块A一些时间做事。如果未按时计时,它将损坏。 要么 请勿更改。相信我,你会破裂的。 要么 我知道使用setTimeout不是一个好习惯,但是在这种情况下,我不得不使用它 我的问题是:遇到作者的此类警告时,我应该重构代码吗(不,我无法与作者联系)?

30
您如何进入大型代码库?
您使用什么工具和技术来探索和学习未知的代码库? 我在考虑诸如grep,,ctags单元测试,功能测试,类图生成器,调用图,代码度量之类的工具sloccount,等等。我会对您的经验,您使用或编写的助手以及您使用的代码库的大小感兴趣。 我意识到熟悉代码库是一个随时间推移而发生的过程,熟悉度可以表示从“我能够总结代码”到“我可以将其重构并缩小到其大小的30%”之类的任何内容。但是,如何开始呢?



17
您如何应对编写的丑陋代码?[关闭]
所以您的客户要求您编写一些代码,所以您这样做。然后,他按预期更改了您的规格,并且您像个好小家伙一样努力地实现了他的新功能。除了...新功能与旧功能有点冲突,所以现在您的代码一团糟。您确实想回去修复它,但是他不断要求新事物,并且每次您完成清洁工作时,都会再次陷入困境。 你是做什么?停止成为OCD狂热者,只接受您的代码将使事情变得一团糟,无论您做什么,都只是继续增加这种怪异的功能?是否保存版本2的清洁?

29
我的公司可以将我在几个小时内注销的应用程序的知识产权授予其他初创公司吗?[关闭]
我是一家卫生公司(无薪)的实习生,我们称之为A公司,我注意到他们使用很多纸质表格来完成可以在计算机上完成的事情。Excel文件中不应包含的内容。因此,我想改进自己的编程,并认为这是最好的机会。 我开发了一些应用程序供他们使用。所有这些应用程序都在公司时间之外。我提出了一份申请书,他们很喜欢,其中一位董事有一个兄弟,他经营一家健康公司。他希望我放弃我的源代码,以便他兄弟的公司可以进一步开发它,甚至可以出售它(我无法接受)。 我无意交出我的代码,因为我花了很多时间在外面,但我也不想与公司中的任何人建立桥梁。我不能去找导演,告诉他“我不这么认为”。 我可以向兄弟演示它是如何工作的,但是该行正在放弃我的代码。如果他们想构建类似的东西,那么他们可以继续前进,我对此没有问题。 解决此问题的正确方法是什么,他们是否有权对我这样做? 编辑:没有合同我什么都没签

5
您如何在源代码上定价?[关闭]
我被要求出售我几年前创建的小型实用程序应用程序的源代码(以及现有用户)。我研究了如何在源代码上定价,但是到目前为止,还没有一个好的解决方案。 我已经在网上搜索过,但没有发现任何有用的信息。然后我遇到了其他一些人,他们也与用户一起出售了源代码,但是它们的价格似乎高得离谱。例如,一个人计算出的每位用户价格约为200美元。他有80个用户,最终以3万美元的价格与用户一起出售了该资源。他是如何得出这个价格的? 我可以用这个公式找到一个好的价格: (用户数x应用程序价格)+(应用程序价格x一年中的新用户数量) ? 如果这是一个很好的公式,那么如何为尚未有用户的来源定价?

10
代码什么时候是“旧版”?[关闭]
我们都完成了,我们已经将一些代码(通常是我们继承的东西)标记为“旧版”?但是它仍然在生产系统中使用-真的是遗留的吗?什么使它成为遗产?我们应该回避这种毫无用处的代码吗?标签的纯粹意义在于让我们不断尝试新事物并保持高层管理人员的愉快和快乐? 答案摘要 通过回答,我看到了四个总体主题。这是我看到的细分: 已交付的任何代码:6 失效系统:2.5 无单元测试:2 开发人员不在周围:1.5

6
为什么没有开源项目的代码概述?[关闭]
那里有非常复杂的开源项目,我想我可以为其中的一些项目做出一些贡献,我希望我能做出一些贡献,但是进入的门槛太高了,原因有一个:在同一时间更改一行代码大型项目,您必须了解所有内容。 您不需要阅读所有代码(即使您阅读,也不够用)并了解每一行的内容以及原因,因为代码可能是模块化和分区化的,所以有适当的抽象,但是即使如此,你需要获得一个概述该项目,这样你就可以知道哪里是模块,其中确实有另外一个模块接口,究竟各模块做的,为什么,以及其中的目录和文件均对这些事情的发生。 我称此代码概述为开放源代码项目可以在网站或文档中向外部人员解释其代码的部分的名称。我认为这将使潜在的贡献者受益,因为他们将能够确定他们可以建立的地方,所涉及的实际主要编码人员,因为他们将能够在编写所有内容的同时重组他们的思想,并会像他们那样帮助用户。帮助理解并更好地报告他们遇到的错误,甚至可能成为贡献者。 但是我仍然从未见过这些“代码概述”之一。为什么?是否有类似的事情,我想念他们?与我描述的功能相同的事情?还是这是一个完全无用的想法,因为除我之外,每个人都可以轻松理解具有数千行代码的项目?

4
类的命名:单数还是复数?[关闭]
对于类名,我总是很难在单数形式和复数形式之间进行选择: CustomerRepository vs. CustomersRepository CustomerService vs. CustomersService CustomerController vs. CustomersController 对于复合名称,则更加困难: OrderCustomerRepository vs.OrderCustomersRepository vs.OrdersCustomersRepository 您喜欢哪种方式,为什么?

7
我们进行版本控制的方式有问题吗?
我和一个程序员团队一起担任业务分析师。我们刚刚发布了该产品的2.0版,并且正在开发3个月内发布的下一个版本(这是内部软件产品)。不幸的是,版本2.0存在一些必须修复的问题,我们将在几周内部署这些修复程序。问题在于,我们也不想部署仍在进行中且计划在未来3个月内不发布的更改。 程序员认为管理此问题的方法是仅检入缺陷代码,而新增强功能的代码将保留在开发人员的本地计算机上,直到完成。我将不得不从他们的机器上获取本地版本进行测试,因为如果他们签入代码,并且我们必须推出另一个补丁来修复缺陷,我们现在还不希望包括这些增强功能。还有一个问题,即同一代码文件同时包含缺陷修复程序和增强功能,因此他们必须在本地复制该代码文件,然后进行更改以修复错误并检查其中的一个错误,然后通过采用以下方法继续进行增强功能:他们制作的本地副本。 似乎很令人费解-是否有更好的方法来处理这种情况?我们正在使用Team Foundation Server和Visual Studio 2010。


13
编译一个随机陌生人的源代码有多安全?[关闭]
假设我正在审查求职者发送的证明其技能的代码。显然,我不想运行它们发送的可执行文件。不太清楚,我宁愿不运行其代码的编译结果(例如,Java允许在注释中隐藏可运行的代码)。 编译他们的代码呢?我需要编译器警告,但是如果它们的代码包含一些巧妙的字符序列,这些序列会利用我的编译器并且我的编译器危害了我的机器,该怎么办? 当我用Google搜索“编译器漏洞”时,得到的所有信息都与编译器优化和代码发布有关,以及所发出的代码是否与原始源代码一样安全。 编译器是否通常经过验证,以确保它们在编译一些巧妙的代码时不会危害用户计算机?从陌生人那里编译一段代码有多安全?


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.