软件工程

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

7
处理分隔文件的最佳方法
因此,通常CSV文件使用逗号和返回字符作为字段和行定界符。 这可能会导致同时包含这两个字符的文本出现明显问题。 显然那里有选择(转义),但是人们如何处理呢?使用不同的字符-管道还是tilda?逃脱他们?毕竟是2010年,现在不使用分隔文件了吗? 至少要努力寻找不出现问题的适当机会。 (请注意,这是出于好奇而不是更扎实的问题-这是我一次又一次地尝试处理数据的问题,总是绕过它,但通常感觉有点好,很脏,并想知道其他人的经历是什么)。

10
从长远来看,外包代码会更昂贵吗?它会损害代码质量吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 2年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我知道有一家公司拥有像样的软件产品的知识产权,并且每年从许可中获得可观的收入。但是,主管(非技术人员)抱怨开发团队的维护成本,因为它严重影响了利润率,并且正在考虑将特定模块的开发外包给收费较低的其他国家。 就个人而言,从长远来看,我认为这不会是更具成本效益的解决方案。出现问题时,这可能会导致通信中断,此外,规格必须是不透水的,最终还是要花费更多时间。我认为,在团队合作中,沟通是关键-还是有一种有效的方法来进行这项工作?

11
如果您的同事辞职,您会通知老板吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 8年前关闭。 如果您团队中的一位同事计划辞职,这可能会给您的公司带来不好的感觉,您会通知老板吗?
16 ethics 

6
我如何判断一个项目是否特别复杂,或者我刚开始才很慢?
我在大型项目上进展不大。源头是巨大的,有许多层物体,通心粉代码,多重继承的双钻石图,原始作者离开时冻结的半生不熟的功能,而且没人知道为什么如此设计很多东西。 我想任何有能力的程序员都会遇到一些麻烦,要想尽一切办法解决错误,完成未完成的工作并添加新功能。但是,我怀疑我会比典型的程序员慢。 我如何判断消息来源是否异常糟糕,我是否做到了任何人都能做到的,而消息来源对于这样的项目来说是典型的,而我只是机智或技能不足?

2
按位或与添加标志
我见过其他人以前使用位或来组合标志: #define RUN 0x01 #define JUMP 0x02 #define SHOOT 0x04 const byte madPerson = RUN | JUMP | SHOOT; 我也是这么做的。 但是我也看到了使用加法的一些(不是很多)组合标志: #define RUN 0x01 #define JUMP 0x02 #define SHOOT 0x04 const byte madPerson = RUN + JUMP + SHOOT; 哪一个更“可读”?(您认为更多人会认出哪个?)这样做的“标准”方法是什么?你更倾向哪个?
16 c++  operators 

5
我该如何编写编程语言规范?
我真的很喜欢编程语言设计。有时,我认为我的语言项目及其潜在用户将从全面的标准文档中受益。我看过许多语言标准,从非常正式的(C ++)到相当非正式的(ECMAScript),但是我无法真正理解如何分解内容并组织这样的文档,即使我认为我总体上很擅长技术写作。 我应该像是一本很长的教程,还是更像是一份正规的数学论文来编写它?如果我正在与参考实现一起开发它,如何使其保持最新状态?我是否应该放弃并将实现和文档视为事实上的标准?此外,拥有标准真的有任何重大好处吗?要求标准是否意味着该语言不必要地复杂?

5
学习发展算法[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 这是一个相当普遍的问题。我对Perl和Python有所了解,并且希望能更深入地学习编程,以便一旦掌握了这些知识,就可以开始开发应用程序,然后开发网站。 我想知道一种算法(步骤顺序:),它可以描述我一般学习编程的方法。我在Perl / Python上发布了一些小问题,并且得到了大家的大力帮助。 注意:-我不着急学习。我知道这需要时间,没关系。 请提供您认为有效的任何建议。另外,请不要强迫我学习Lisp,Haskell等-我是初学者。

14
如果您必须返回并重新学习技能,该怎么做?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 我的弟弟希望开始编程。他14岁,技术上很熟练,但没有编程经验。他正在向我寻求指导,但我觉得我的经验还不够,所以我想在这里问一下。 他对Web编程更感兴趣,但对台式机/移动设备/服务器应用程序也很感兴趣。 对他来说,什么是一条好的学习道路?我要给他买一堆圣诞节的书,以使他入门。问题是,他应该学什么,以什么顺序学习? 从我的角度来看,他需要学习理论和代码。我想用Python或Ruby或PHP开始他。如果他想进入网络,那么他还需要学习HTML,CSS,Javascript等。 在这三个领域(语言,理论,标记/等)中,您认为学习的最佳顺序是什么?另外,我有什么遗漏吗? 谢谢!

12
可怜的作家会变成可怜的程序员吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我正在阅读彼得·塞贝尔(Peter Seibel)的《工作中的编码员》,很多时候都提到不能写的程序员通常会变成贫穷的程序员-道格拉斯·克罗克福德(Douglas Crockford),约书亚·布洛赫(Joshua Bloch),乔·阿姆斯特朗(Joe Armstrong),迪杰斯特拉(Dijkstra)声称只读了一半的书)。 您对此有何看法?无法用英语等自然语言表达自己的意见会妨碍编写好的代码吗?
16 writing 

14
我应该在自由职业之前问/告诉我的老板吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 我目前在一家咨询公司实习。下学期毕业后,我将很快转为全职员工,而且我喜欢在那里工作。但是,作为一名学生,我没有钱,而且遇到了一个工作以外的企业主,他提议雇用我从事一些自由网络开发。 因为我在工作之外遇到了这个人,所以我觉得为他做自由职业不会有利益冲突。但是,他要我做的工作与我现在为现任老板所做的工作非常相似。 在考虑报价之前,我应该与老板交谈吗? 编辑:我知道我不能从工作中获取知识产权,而且我没有合同,我可以随意工作。

14
面试中对代码问题的雇主有何利弊?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 5年前关闭。 乔尔测试(Joel Test)的第11个问题是:“新应聘者在面试中是否写代码?”。要求新候选人在面试中编写代码并做出决定的论点是什么?

4
“不要重新发明轮子”会忽略人类记忆的局限性吗?
在Haskell和F#中工作的一件事告诉我,一个比我聪明的大学里的某人可能已经找到了我所做工作的抽象。同样在C#和面向对象的编程中,无论我在做什么,都可能有一个“ it”库。 我非常强调在编程中重用抽象,这使我经常感到两难之间:1)自己编写简短又肮脏的东西; 2)花相同的时间找到别人更健壮的库/解决方案,然后再使用它。 像最近一样,这里的一位编码人员为CSV文件编写了一个(反)序列化器,我忍不住想起来,如果.NET标准尚未提供,那么在网上很容易找到这样的内容蜜蜂。 不过,我不怪他,在.NET中工作了好几次,我根据我所知道的方法修补了一个解决方案,只是意识到通常在同一个库中有一些方法调用或对象之类的东西 ,它们做了什么我想要,但我不知道。 这仅仅是经验不足的征兆,还是在编写新内容和重用旧内容之间总要权衡取舍?我最讨厌的是遇到一个我已经知道并忘记的解决方案时。我觉得现在一个人无法消化大多数语言预打包的大量代码。


5
教科书等中的源代码是否应该翻译?
几周前,我的课被分配翻译成葡萄牙语Real World Haskell。在翻译文本和注释时,我开始怀疑我是否也应该按照教师的建议翻译代码。例如: 数据BookInfo = Book Int字符串[String] 衍生节目 会成为 数据InfoLivro = Livro Int字符串[String] 衍生节目 由于我还没有阅读过任何与葡萄牙语有关的软件书籍,因此,我不知道这是否是常见的做法,也不知道是否应该这样做。最后,代码是一种混合语言(也许Haskell中的示例不是一个很好的例子,因为您可以像那样快速创建同义词type CadeiaDeCaracteres = String,但是您明白了)。因此,无论您多么努力,都没有关系,您必须依靠读者以前的经验来使用某种基本的英语单词。 知道这一点,我真的看不出翻译代码的意义,因为我们在编码生涯的早期就学习了它应该以通用语言编写。但是,如果需要翻译周围的文本(例如注释和书中的文本本身),那么在这件事上有什么可能和可行的?您能为我提供一些操作指导吗?
16 coding 

9
您如何知道何时停止添加功能?
前一段时间,我编写了一个非常小的python脚本,该脚本定期检查xml feed中是否有新条目,并在出现时提醒用户注意新条目。我为自己编写了此代码,因此它本质上是一个基于控制台的程序,任何熟悉控制台界面的人都可以使用。 过了一会儿,我认为它可能对其他人有用,并开始整理它,清理输入内容,消除错误。我想到,因为我写了脚本,所以我知道如何有效,准确地使用它,而其他人却没有,所以我开始添加GUI。它从一个简单的菜单开始,然后扩展到具有界面和选项菜单的更完整的GUI。然后,我添加了存储的用户首选项,还添加了以前搜索的xml feed的存储,以加快重复搜索的速度。 我添加了日志记录以帮助在出现问题时调试应用程序,将应用程序升级到适用于我选择的平台的最新可用稳定python代码库,并改进了对话框功能。 我已经对错误进行了错误修正和注释,但是我仍然认为我可以做一些事情来改进应用程序,然后再将其提供给Alpha测试人员。与我最初的20-30行脚本相去甚远。从概念验证到可接受的使用程序,我只花了一个或两个小时的时间就花了10到20倍。(我仍然是菜鸟,东西花了我很长时间,但仍然....) 您怎么知道什么时候停止添加/调整/修复东西,让您的宝宝在户外露面?

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.