Questions tagged «programming-practices»

编程实践是软件开发中常用或不常用的实践。这些可以包括敏捷开发,看板,编码快捷方式等。

3
Web服务之前,桌面应用程序如何与远程服务器通信?
我对桌面应用程序没有太多的经验,但是如果必须创建客户端服务器桌面应用程序,则可以通过Web服务来进行数据访问。我相信通过Web服务进行的数据访问可提供安全性-我不需要传递数据库服务器的用户名和密码等。 在使用Web服务之前,数据库应用程序是如何做到这一点的?是否已将所有重要的数据库信息传递到桌面应用程序的安装中?如果是这样,程序员如何管理安全性方面?还是程序员使用类似于Web服务的内容?

4
在for循环注释中使用此额外变量有什么好处?
我在一个正在处理的大型项目(伪代码)中发现以下循环注释: var someOtherArray = []; for (var i = 0, n = array.length; i < n; i++) { someOtherArray[i] = modifyObjetFromArray(array[i]); } 引起我注意的是这个额外的“ n”变量。我以前从未见过这样写过的书。 显然,在这种情况下,没有理由不能以以下方式编写此代码(我已经很习惯了): var someOtherArray = []; for (var i = 0; i < array.length; i++) { someOtherArray[i] = modifyObjetFromArray(array[i]); } 但这让我思考。 编写这样的for循环是否有意义?这个想法浮现在脑海,“数组”的长度在for循环执行期间可能会改变,但是我们不想循环到比原始大小还远的地方,但是我无法想象这种情况。 在循环内缩小数组也没有太大意义,因为我们很可能会得到OutOfBoundsException。 是否有已知的设计模式在其中使用此注释? 编辑 如@ Jerry101所述,原因是性能。这是我创建的性能测试的链接:http …

4
私有方法何时应采用公共路线访问私有数据?
私有方法何时应采用公共路线访问私有数据?例如,如果我有这个不可变的“乘数”类(我知道有点作弊): class Multiplier { public: Multiplier(int a, int b) : a(a), b(b) { } int getA() const { return a; } int getB() const { return b; } int getProduct() const { /* ??? */ } private: int a, b; }; 我可以通过两种方式实现getProduct: int getProduct() const { return a * b; …

2
“清洁代码”实践真的那么清洁和有用吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我目前在一家大公司实习,他们的软件交付结构正在发生许多变化(迁移到敏捷)。 在过去的几个月中,我注意到这种对Clean Code实践的宗教依恋,而这本书 对于开发人员来说就像一本圣经。 现在,干净代码的最重要特征之一是自解释代码,它基于可理解的命名和严格的重构。这是no commenting规则。 我知道这段干净的代码是一项长期投资,可以减轻代码维护和改进的负担,但是...这真的值得大惊小怪吗? 任何人都可以分享他们在“清洁法规”方面的经验以及任何意见,无论我是太保守还是只是暂时的趋势。


4
如何说服我的同事相信做正确的事可以节省他们的时间
我最近刚在一家新公司工作,当时只有少数程序员。它是一家中等规模的公司,大约有70名员工,但IT部门只有9-10名,而我旁边还有3位“程序员”。但是,这些人的经验非常有限,确实在做很多事情。例如,我们的一个项目是PHP网站。大多数代码存储在20,000行的PHP控制器中,PHP中嵌入了约6000行的JavaScript。 我在这里和那里不断地提出一些小建议,但是没有人在听,每个人都说他们太忙了,无法执行我的建议。问题是,他们不应该那么忙,如果事情做对了也不会。他们将大部分时间都花在修理不断破裂的东西上。如果每个项目构建正确,我自己就能完成。 我应该采取什么方法说服这些人或经理,那就是事情需要改变,而改变事物可以节省很多时间?我是否应该跳过试图说服我的同事而直接去找经理的建议,关于如何在他们开始做正确的事情时该公司如何节省一大笔钱呢?


13
处理大括号汤
我已经在C#和VB.NET中编程了多年,但主要是在VB中编程。我正在向C#转变职业生涯,总的来说,我更喜欢C#。 我遇到的一个问题是大括号汤。在VB中,每个结构关键字都有一个匹配的close关键字,例如: Namespace ... Class ... Function ... For ... Using ... If ... ... End If If ... ... End If End Using Next End Function End Class End Namespace 用C#编写的同一代码最终很难阅读: namespace ... { class ... { function ... { for ... { using ... { if ... { …

3
是更好的做法是在类中预初始化属性,还是在过程中添加它们?
很抱歉,这是一个绝对如此愚蠢的问题,但是我很好奇目前存在的最佳做法,而且我似乎在Google上找不到很好的答案。 在Python中,我通常使用一个空类作为超级类数据结构容器(有点像JSON文件),并在此过程中添加属性: class DataObj: "Catch-all data object" def __init__(self): pass def processData(inputs): data = DataObj() data.a = 1 data.b = "sym" data.c = [2,5,2,1] 这给了我极大的灵活性,因为容器对象实际上可以存储任何东西。因此,如果出现了新的需求,我将其添加为DataObj对象的另一个属性(我在代码中传递了该属性)。 但是,最近(FP程序员)给我留下了深刻的印象,那就是这是一种糟糕的做法,因为这使得很难阅读代码。必须仔细阅读所有代码,以找出DataObj实际具有的属性。 问题:如何在不牺牲灵活性的情况下重写此代码,以实现更大的可维护性? 我可以采纳函数式编程中的任何想法吗? 我正在寻找最佳实践。 注意:一种想法是使用一个期望遇到的所有属性来预先初始化该类,例如 class DataObj: "Catch-all data object" def __init__(self): data.a = 0 data.b = "" data.c = [] def processData(inputs): data = …

7
概括代码内部的变量用法
我想知道对变量进行泛化是否是一个好习惯(使用单个变量存储所有值)。 考虑简单的例子 Strings querycre,queryins,queryup,querydel; querycre = 'Create table XYZ ...'; execute querycre ; queryins = 'Insert into XYZ ...'; execute queryins ; queryup = 'Update XYZ set ...'; execute queryup; querydel = 'Delete from XYZ ...'; execute querydel ; 和 Strings query; query= 'Create table XYZ ... '; execute query …

3
在将字符串变量与带有.equals()的字符串文字进行比较时,是否存在关于项目顺序的标准做法?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 每个都有好处,我了解其中的区别,但是什么是最佳/标准做法?又为什么呢? 例如 : "myString".equals(myStringVar) 避免潜在的NPE,并且不需要空检查。(好东西?) 读取的更干净,因为不需要空检查。 如果null不是期望值,则您的程序可能会中断而没有任何明智之举。 然而 myStringVar.equals("myString") 如果null为期望值,则需要进行null检查。(好东西?) 可以使用空检查使复合条件变得混乱。 允许NPE通知我们是否发生了故障。 哪个变体被认为是Java使用的标准,为什么?

5
由于什么原因,我应该在C#中保持“使用”部分的整洁?
重构代码后,我将IDE转到C#类的using部分,并清除了未使用的名称空间和重复的名称空间,并对它们进行了排序。 我的一对(配对编程)问我原因。我不知道为什么要这么做。我这样做是出于保持我的所有代码整洁的习惯。我的意思是,我告诉他,一般而言,拥有简洁的代码是一个好主意,但是当然,这并不是一个很好的理由,因为我什至不花时间在任何C#代码页的using部分中。 由于多次将类或枚举(或通常的类型)从一个名称空间移动到另一个名称空间,这会在代码中添加新的using语句(通过手动在代码窗口中向上并自己编写using语句,或通过编辑器使用Alt+ Ctrl+ F10组合),并且由于这些新的using语句将添加到using节的末尾,这使得它们不会按字母顺序排序,并且由于编译器从不抱怨这些问题中的任何一个,因此我们为什么要关心这样做节整洁?我们可能有什么原因?

4
在提交消息中引用错误/问题是否被视为良好做法?
我正在一个项目中,在该项目中我们设置了源代码控制,可以在Bug跟踪器中自动编写注释。我们只需在提交消息中写入错误问题ID,然后将提交消息作为注释添加到错误跟踪器。 我只能看到这种做法的一些弊端。如果将来某个时候源代码与错误跟踪软件分离(或者报告的错误/问题以某种方式丢失)。或者,当某人正在查看提交历史记录但无法访问我们的错误跟踪器时。 我的问题是在提交消息中包含错误/问题引用是否被认为是一种好习惯?还有其他缺点吗?

2
利用“空闲时间”开发创造力
一些公司惊奇地发现,程序员是非常有创造力的人。例如,我想到的是Google和Atlassian,他们允许定期(我相信每月)的“自由日”,使程序员可以按自己的意愿进行工作(获得批准),而公司则可以从中获得回报。 引用的示例包括新产品,以前没有人希望修复的错误修复,新团队的形成等。另一个结果(也许是最初的目标)是,在业余时间之间的剩余日子里,程序员有更多的动力。 该理论是否还有更多的支持,那就是允许“受控的”创造性输出有益于激励和士气,或者是使用该方法获得成功的更多示例?

11
如何向非程序员解释编程不是重复性的任务?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 有些人认为编程只是在键盘上重复键入而已。这些都不是真的。首先,除了实际键入代码外,您还有很多工作要做,例如设计架构等。其次,这可能是一个变化很大的,非重复性的任务,新挑战不断出现。 您应该如何解释编程对非程序员而言不是重复性任务?

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.