问题标签 [code-structure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2481 浏览

c++ - 如何按标题自动对方法进行排序?

以与 .cpp 文件中相同的顺序对头文件中的方法进行排序是一种很好的风格,但这种顺序通常在开发过程中变得粗糙。

如何将 cpp 文件中的方法重新排序为头文件中给出的顺序?

0 投票
9 回答
2283 浏览

java - 清理大型遗留 Java 项目

我被指派在一个巨大的 Java 项目上做一些工作,开发人员多次迭代的影响是显而易见的。没有标准的编码风格、格式、命名约定或类结构。这是一个美好的一天,当我遇到一个使用 Javadoc 的课程时,单元测试是一个快乐的白日梦。

到目前为止,我们这些参与该项目的人一直在“融入”,适应我们正在从事的任何课程的现有惯例,但现在是时候强加一些秩序和一致性了。

这是一项艰巨的挑战,我正在寻找人们可能对此类任务提出的任何建议。是否有任何特别有效的策略或需要注意的陷阱?尝试一下是个好主意吗?

编辑补充:我不想给人留下这个项目很糟糕的印象——它实际上设计得很扎实,而且基本上写得很好。它只是感觉它的年龄和维护的必然性......

0 投票
1 回答
406 浏览

android - Android应用结构题

我目前正在开发一个使用 MapView 并向其添加叠加层的应用程序。基本上,在任何一个特定时间,覆盖列表都不应超过两个。

这是我试图做的......

我扩展了 ItemizedOverlay 类 (MyFriendOverlay),然后在该扩展类中创建了一个私有 ArrayList 对象,我将把叠加层附加到该对象。然而; 我遇到了一个不确定如何解决的问题。如果你看这段代码:

ImageView mapMarker = new ImageView(getApplicationContext()); mapMarker.setImageResource(R.drawable.markertrp);

myPointsToShow = new myFriendOverlay(mapMarker.getDrawable(), getApplicationContext());

正如这里可以注意到的,我创建了一个 ImageView,其中包含基于我的 drawable 的图标。在此之后,我从 ItemizedOverlay 获得了我的扩展类。在构造函数中,它有两个参数,drawable 和 context。

据我所知,下面的构造函数是必需的(也许可以修改):

public myFriendOverlay(Drawable defaultMarker, Context context)

这里的问题是我不断创建 myPointsToShow 的新实例,这是一个问题,因为我有一个要在扩展类中使用的 ArrayList,因此我可以直接控制覆盖。通过每次实例化一个新的,我并没有真正添加到列表本身。

简而言之:

我想要的只是让我的应用程序有两个点(A 和 B),如果检测到 B 的新位置,则从覆盖列表中删除 B,并将其替换为新位置。A 也一样。为了简化它,我想将索引 0 附加到 A 并将索引 1 附加到 B,这样它就不会跨越两个点。

由于必要的构造函数的问题,我无法为此提出解决方案,也许我想得太苦了......

请提供任何反馈!:)

谢谢阅读。

0 投票
7 回答
377 浏览

coding-style - 代码结构:我应该使用很多函数来增加可读性吗?

我的问题考虑到了 Bash 和 PowerShell 脚本,但我想它也适用于其他语言。

据我了解,函数的目的是多次执行相同(或非常相似)的任务。这减少了脚本中的代码量,也使其更易于维护。

考虑到这一点,如果您发现您的脚本只调用一次函数,那么该函数没有理由作为函数存在。相反,您应该获取函数的代码并将其放置在调用该函数的位置。

说了这么多,这是我的问题:

如果我有一个复杂的脚本,我是否应该将每一段代码移动到它自己的函数中,即使每个函数只会被调用一次?这将大大增加脚本的可读性,因为它的逻辑(函数)都将位于脚本的顶部,而执行流程将位于脚本的底部。由于 50 行代码仅由 1 行表示,因此更容易理解脚本在做什么。

其他人会这样做吗?这种方法有缺点吗?

0 投票
3 回答
1243 浏览

asp.net-mvc - 我可以在 ASP.NET MVC3 中将自定义类设置为我的控制器的默认基类吗?

我想从我自己编写的自定义基类继承我的所有控制器。每次添加新控制器时我都可以更改该行,但如果我可以在某处指定在那里设置的默认值会更好。这样我就不必担心忘记这一点,以后加入项目的其他人会更轻松。

有什么办法可以做到这一点?

0 投票
3 回答
1480 浏览

python - 如何使用有状态的 Python 模块正确实现测试隔离?

我正在从事的项目是一个包装成 Python 包的业务逻辑软件。这个想法是各种脚本或应用程序将导入它,初始化它,然后使用它。

它目前有一个顶级的 init() 方法来进行初始化并设置各种东西,一个很好的例子是它使用数据库连接设置SQLAlchemy并存储 SA 会话以供以后访问。它被存储在我的项目的子包中(即 myproj.model.Session,因此其他代码可以在导入模型后获得有效的 SA 会话)。

长话短说,这使我的包成为一个有状态的包。我正在为该项目编写单元测试,这种 stafeful 行为带来了一些问题:

  1. 测试应该是隔离的,但是我的包的内部状态打破了这种隔离
  2. 我无法测试主要的 init() 方法,因为它的行为取决于状态
  3. 未来的测试将需要针对具有众所周知的模型状态的(尚未编写的)控制器部分运行(例如,预填充的sqlite in-memory db

我应该以某种方式重构我的包,因为当前结构不是最佳(可能)实践(tm)吗?:)

我应该把它留在那里并每次都设置/拆除整个事情吗?如果我要实现完全隔离,这意味着在每次测试中完全擦除并重新填充数据库,这不是矫枉过正吗?

这个问题实际上是关于整体代码和测试结构的,但是为了我的测试,我使用nose-1.0是值得的。我知道Isolate 插件可能对我有帮助,但我想在测试套件中做奇怪的事情之前得到代码。

0 投票
5 回答
254 浏览

model-view-controller - MVC 将动作放入最合适的正确控制器中

我只是想知道在某些情况下决定在哪里创建动作/视图的最佳实践方法是什么。

如果用户有很多视频

创建动作/视图以显示用户视频的最佳位置在哪里?

因此,在用户帐户页面的“我的视频”链接中,您是否

  1. 只需创建一个users/my_videos操作并查看。
  2. 创建视频/my_videos动作和视图。
  3. 或者您很可能已经拥有一个具有搜索功能的视频/索引控制器/操作。只需使用这个传入用户 ID。

非常感谢任何想法/建议

谢谢

狮子座

0 投票
4 回答
4746 浏览

php - PHP应用程序结构

我开始做一个网站,很快我发现我的代码是一团糟。我已经有一段时间没有使用 PHP 编程了,从那以后我学习了 OOP。从这个角度来看,虽然用 C# 或 java 制作应用程序很容易,但 PHP 却给我带来了麻烦。

我曾经用最少的方法对所有的东西(用php)进行编程,只用最少的方法,根本没有类。那么方法中应该有多少,这些类应该在哪里?

示例: 我有 account.php,我想更新用户信息。那么在检查了有人发送了一些数据之后if(isset($_POST[..,接下来呢?我以前只是进行所有检查$email=CheckForRisksOrSomething($_POST["email]);,然后更新mysql。

这让我想到了一个问题,我应该创建一个类User以及它应该包含哪些方法?假设 user.php 会显示用户的个人资料,那么这个类应该保存在哪里。

回到课程中应该有多少,我应该只在如下文件中使用:

Someclass 应该保存在哪里?

因此,如果有人能给我一个如何构建以下功能的示例(在文件、类和可能的方法中)。

  • 用户(注册、登录、编辑帐户..)
  • 带有评论的图片
  • 新闻(也有评论)
  • 行政

这当然只是一个例子,但我不想继续我的烂摊子,然后在三天后看着它,只是捂着脸想知道我在那里写了什么。好吧,我今天已经这样做了,这就是我问的原因。


编辑24.2.2016

虽然这是一个老问题,但建议研究一个框架。虽然设置它可能需要一些时间,但它会提高开发速度,代码又好又干净,而且更安全。我个人使用 Laravel。

0 投票
3 回答
41 浏览

php - 做activitylist/log的方式/编码方法

好的,所以这个问题与编码过程无关,而更像是一种对这个活动列表进行编码的好而干净的方法,我计划构建..

此活动列表将包含页面上的所有活动。

因此,基本上在页面上进行的所有操作上,它都会调用类似于函数的函数insertActivity($stuff)来插入有关该操作的活动,例如您刚刚做了某事。

现在我想知道编码方式,我应该怎么做?

我应该在 db 的行中显示“你刚刚做了某事”的消息,还是应该在我的 php 文件中定义数字 1 代表“你刚刚做了某事”?

消息未存储在数据库中将帮助我稍后编辑所有活动消息的消息,例如,如果消息应该更改为“你刚刚吃了点东西”。

我是否应该像我之前所说的那样在动作保存之前/之后调用函数,将此动作记录到活动列表中,或者任何其他更受欢迎的方式来做到这一点?

我想到的只是 insertActivity() 应该通过它获得的输入($stuff)将活动插入数据库。

非常感谢一种简单而干净的编码方式来做到这一点。

0 投票
1 回答
1165 浏览

node.js - node.js 中的应用程序结构?

我熟悉 Java Web 容器,其中 Web 应用程序被部署为war文件。

我很困惑如何在 Node.js 中部署 CSS、JS、HTML、图像(等等)。如何做到这一点?

我对 Node.js 的了解非常有限。提前致谢!