软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

17
如何编写正确的循环?
大多数时候,在编写循环时,我通常会写错边界条件(例如:错误的结果),或者我对循环终止的假设是错误的(例如:无限运行的循环)。尽管经过反复尝试后我的假设是正确的,但是由于头脑中缺乏正确的计算模型,我感到非常沮丧。 /** * Inserts the given value in proper position in the sorted subarray i.e. * array[0...rightIndex] is the sorted subarray, on inserting a new value * our new sorted subarray becomes array[0...rightIndex+1]. * @param array The whole array whose initial elements [0...rightIndex] are * sorted. * @param rightIndex The …

6
EAV-在所有情况下真的不好吗?
我正在考虑对其中一个项目中的某些内容使用实体属性值(EAV)模型,但是在Stack Overflow中有关它的所有问题最终都会导致将EAV称为反模式。 但是我想知道在所有情况下这是否是错误的。 假设商店产品实体具有共同的特征,例如名称,描述,图像和价格,它们在许多地方都参与了逻辑,并且具有(半)独特的特征,例如手表和沙滩球将通过完全不同的方面进行描述。因此,我认为EAV将适合存储那些(半)独特的功能。 所有这些假设是,为了显示产品列表,产品表中有足够的信息(这意味着不涉及EAV),并且仅在显示一个产品/比较最多5个产品/等时。使用通过EAV保存的数据。 我已经在Magento商业中看到了这种方法,并且这种方法非常流行,那么是否存在EAV合理的情况?

14
公司在如此严格的时间表上安排程序员是否正常?[关闭]
所以我已经从事这项工作了几个月。我有些沮丧,因为我从2到7做最好的工作。在以前的工作中,我9:30-10:00进来,然后7离开。有些公司对此还可以,有些则没有。 但是我目前的公司坚持要我在8:30到那里。任何偏离都很大。这是典型的吗?我有一些同事,他们都是9:30到6:30、10:00-7:00的家伙...但是也许这只是创业文化? 考虑到我没有见到客户等原因,我不明白为什么会如此僵化。我也看不出为什么有时会有15到20分钟的变化,为什么人们不只是假设我离开时会做出调整... 作为开发人员,这些期望是不合理的还是我缺少什么?

21
“在开始了几年的职业生涯后就不要编程了”。这是一个合理的建议吗?[关闭]
我是一位经验丰富的开发人员,在PHP方面有大约5年的经验,而在Java,C#方面则略少一些,并且现在尝试学习一些Python。自从我作为程序员的职业生涯开始以来,我时不时地被其他程序员告知,编程适合于职业生涯的前几年(大多数人将其视为5年),并且必须在以后改变方向。它。它们出现的原因包括头痛和与编程相关的压力。他们还说,程序员的社交能力较差,通常不愿给家人时间,等等。尤其是“哦,来吧,你不能一辈子编程!” 我在这里有些困惑,需要询问其他人。如果我退出编程,那该怎么办?我认为在这种情况下,教学可能是一个不错的选择,但可能需要首先获得博士学位。也许还值得注意的是,在我国(巴基斯坦),程序员的生活不是很好,因为通常他们必须在办公室里多花2-3个小时来完成紧急编程任务。我认为其他国家和地区的情况也有些相似。 在该领域工作5年后,您认为将职业从编程转变为其他职业是合理的建议吗? 更新 噢,我不知道人们在这一领域可以拥有40多年的经验。看到人们自1971年以来就开始这样做了,我感到既兴奋又惊奇。这意味着我出生前15年!能够与这样经验丰富的人交谈很高兴,我们在巴基斯坦没有这样的机会。 再次感谢您提供的所有帮助和分享。让您对此有所想法,这是一个很好的经历。


28
为什么现在有更多的程序员不自由职业?[关闭]
将整个派留给他们中的几个,扩大了两种地位之间的巨大差异。薪酬是(巨大的)一种,不必加班是另一种。 我悬而未决,希望能就影响到这种感觉和决定不参加的所有不同主题获得许多出色的答案。 尽管这个问题确实是全球性的,但我会对与我所钟爱的美国,印度甚至澳大利亚等当地市场有关的任何研究,事实,文章,观点感兴趣。

30
为什么软件没有汽车那么可靠?[关闭]
我有一个用户问我这个问题。我们知道汽车发生故障,但这是由于物理原因(除非涉及软件!)。 我试图回答说,软件是一个年轻的行业,但用户反驳说:“汽车行业难道不是比更少的人变得更加稳定和可靠吗?”。 我还试图回答说软件更复杂,但是用户反驳说,构成汽车的零件有成千上万。通常,设计和制造汽车的人都非常了解其组件,但最终他们仍然会共同努力。 那么,为什么软件没有汽车那么可靠?

19
什么时候版本控制提交太大?[关闭]
我曾在多个地方听到过“不要做大的提交”,但我从未真正理解过什么是“大的”提交。如果您处理一堆文件(即使有关联),它会很大吗?您应该一次处理多少个项目? 对我来说,我很难做出“小的承诺”,因为我忘记或创建了会创建其他东西的东西。然后,您将得到如下内容: 制作自定义传出队列 机器人 -新字段msgQueue,无非就是SingleThreadExecutor -sendMsg阻止直到发送消息为止,并在消息获取之间添加等待时间 已发送 -adminExist调用已更新(请参阅控制器) -删除被调用方的sendMessage 控制者 -新字段msgWait表示消息之间等待的时间 -开始将服务插件移至reloadPlugins -adminExists由于全局管理员而从服务器移出。检查频道 服务器和全局级别 管理员 -获取适当对象Admin的新方法getServer和getChannel 属于 BotEvent -toString()还显示了extra和extra1 渠道 -channel字段重命名为name -修正频道(int)中的错字 服务器 -将adminExists存在到控制器中 插件执行器 -增加了次要测试,稍后将删除 JS插件 -更新为框架变更 -用Controller.instance替换InstanceTracker.getController() -VLC现在在自己的文件中交谈 各种NB项目更新和更改 --- 受影响的文件 修改/trunk/Quackbot-Core/dist/Quackbot-Core.jar 修改/trunk/Quackbot-Core/dist/README.TXT 修改/trunk/Quackbot-Core/nbproject/private/private.properties 修改/trunk/Quackbot-Core/nbproject/private/private.xml 修改/trunk/Quackbot-Core/src/Quackbot/Bot.java 修改/trunk/Quackbot-Core/src/Quackbot/Controller.java 修改/trunk/Quackbot-Core/src/Quackbot/PluginExecutor.java 修改/trunk/Quackbot-Core/src/Quackbot/info/Admin.java 修改/trunk/Quackbot-Core/src/Quackbot/info/BotEvent.java 修改/trunk/Quackbot-Core/src/Quackbot/info/Channel.java 修改/trunk/Quackbot-Core/src/Quackbot/info/Server.java 修改/trunk/Quackbot-GUI/dist/Quackbot-GUI.jar 修改/trunk/Quackbot-GUI/dist/README.TXT 修改/trunk/Quackbot-GUI/dist/lib/Quackbot-Core.jar 修改/trunk/Quackbot-GUI/nbproject/private/private.properties 修改/trunk/Quackbot-GUI/nbproject/private/private.xml 修改/trunk/Quackbot-GUI/src/Quackbot/GUI.java …


7
在依赖于正在审查的另一个分支的分支上工作
git如何帮助解决以下情况: 我的任务分为两部分:后端任务和前端任务。我提出合并请求,以合并后端更改并等待其合并(和地址反馈)。在等待期间,我无法真正处理前端更改,因为它取决于后端更改,而这些更改在master分支上尚不可用。 在仍在审阅中时,从后端更改分支将更改引入到前端更改分支的最佳方法是什么?
65 git  branching 

5
什么时候应该使用基于事件的编程?
我一直在传递回调或只是从程序中的其他函数触发函数,以使任务完成后就可以进行操作。完成后,我将直接触发该函数: var ground = 'clean'; function shovelSnow(){ console.log("Cleaning Snow"); ground = 'clean'; } function makeItSnow(){ console.log("It's snowing"); ground = 'snowy'; shovelSnow(); } 但是我已经阅读了许多编程方面的策略,据我了解它强大但尚未实践的策略是基于事件的(我认为我所了解的一种方法称为“ pub-sub”): var ground = 'clean'; function shovelSnow(){ console.log("Cleaning Snow"); ground = 'clean'; } function makeItSnow(){ console.log("It's snowing"); ground = 'snowy'; $(document).trigger('snow'); } $(document).bind('snow', shovelSnow); 我想了解基于事件的编程的客观优缺点,而不是仅仅从其他函数中调用所有函数。在什么情况下可以使用基于事件的编程?

8
一个班级如何在不违反单一责任原则的情况下拥有多种方法
单一责任原则在维基百科上定义为 单一责任原则是一种计算机编程原则,它指出每个模块,类或功能都应对软件提供的功能的一部分负责,并且责任应完全由类封装 如果一个班级仅应承担一项职责,那么它怎么可能有不止一种方法?每种方法都不会承担不同的责任,这将意味着该类将承担多个责任。 我看到的每个展示单一责任原则的示例都使用一个只有一个方法的示例类。查看示例或使用多种方法解释类可能会有所帮助,但仍然可以认为这是一种责任。

7
当逻辑选项是保留关键字时如何命名?[关闭]
有时候,某些事物(例如变量)的最合逻辑的名称是所选语言或环境中的保留关键字。当没有同等合适的同义词时,该如何命名? 我想象有针对此问题的最佳实践启发式方法。这些可以由编程语言和环境的创建者或管理者提供。例如,如果python.org(或Guido van Rossum)说了如何用Python处理它,那将是我书中的一个很好的指导原则。有关如何使用C#处理它的MSDN链接也将很好。 另外,软件工程中主要影响者提供的指南也应该是有价值的。也许Google / Alphabet有一个不错的风格指南,可以教我们如何处理它? 这只是一个示例:在C#语言中,“默认”是保留关键字。当我使用枚举时,我可能希望将默认值命名为“ default”(类似于“ switch”语句),但不能这样。 (C#区分大小写,枚举常量应大写,因此“ Default”是显而易见的选择,但让我们假设当前的样式指南规定所有枚举常量都应为小写。) 我们可以考虑使用“ defaultus”一词。 ”,但这不符合“最小惊讶原则”。我们还应该考虑“标准”和“初始”,但是不幸的是,“默认”是在这种情况下准确传达其目的的词。
64 naming 

8
我如何在软件项目开始时就做好准备?[关闭]
我是一名有1年经验的程序员,最近我意识到我很少正确地启动一个项目(我的大部分副项目),通常项目周期会像 从一些用例开始 开始编码 意识到一些我不能很好处理的事情,并且在当前的代码库中不合适。 重写大部分代码 这可能会发生几次 所以我的问题是 这种做法是普遍的,还是暗示我没有能力? 我如何在这方面提高自己?


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.