Deleting the wiki page 'Code Standards' cannot be undone. Continue?
Writing clean and understandable code is GitNex core value from the start. Here are the few standards when writing code for GitNex.
Note: You can use code reformat in Android Studio(Code -> Reformat Code) to format the code automatically. GitNex has code style applied already.
package org.mian.gitnex.adapters;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.MenuItem;
/**
* Author M M Arif
*/
The 1st line in above code is the package class. After that is new blank line and then the import starts. Import packages should not have any blank lines in between.
After import lines there is one more blank line and after that is the author of the template/code.
If you have copied the template code from another file, then the author section should be:
package org.mian.gitnex.adapters;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.MenuItem;
/**
* Template Author M M Arif
* Author 6543
*/
Next is the main class,
public class ExploreRepositoriesFragment extends Fragment {
private static String repoNameF = "param2";
private static String repoOwnerF = "param1";
private ProgressBar mProgressBar;
private RecyclerView mRecyclerView;
private TextView noData;
private TextView searchKeyword;
private Boolean repoTypeInclude = true;
private String sort = "updated";
private String order = "desc";
private int limit = 50;
}
Note the blank line before declaring any variables and functions.
if (response.isSuccessful()) {
assert response.body() != null;
getReposList(response.body().getSearchedData(), context);
}
else {
Log.i("onResponse", String.valueOf(response.code()));
}
GitNex app has used tabs(4 spaces) and it is recommended to use tab for indentation.
All statements should have proper indentation. Example,
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.repoStargazers:
Intent intent = new Intent(context, RepoStargazersActivity.class);
intent.putExtra("repoFullNameForStars", fullName.getText());
context.startActivity(intent);
break;
case R.id.repoWatchers:
Intent intentW = new Intent(context, RepoWatchersActivity.class);
intentW.putExtra("repoFullNameForWatchers", fullName.getText());
context.startActivity(intentW);
break;
case R.id.repoOpenInBrowser:
Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class);
intentOpenInBrowser.putExtra("repoFullNameBrowser", fullName.getText());
context.startActivity(intentOpenInBrowser);
break;
}
return false;
}
});
Variable names has to be clear for what it is used. Scope should be defined properly for the variable. Example,
private TextView issueNumber;
private ImageView issueAssigneeAvatar;
Every layout must have components with defined ID's. Example,
<TextView
android:id="@+id/branchName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textIsSelectable="true"
android:textSize="18sp" />
<TextView
android:id="@+id/branchCommitAuthor"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textIsSelectable="true"
android:textColor="@color/colorWhite"
android:textSize="16sp" />
<TextView
android:id="@+id/branchCommitHash"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/colorWhite"
android:textSize="16sp"
android:textColorLink="@color/lightBlue" />
All the string names in strings.xml
must be meaningful. Also check for the string if it is already defined.
<string name="mergePRSuccessMsg">Pull Request was merged successfully</string>
<string name="mergePR404ErrorMsg">Pull Request is not available for merge</string>
Most of the icons used in GitNex are taken from open source project Feather Icons. Please download an appropriate icon from feather site and use the AS tool to upload it to drawable directory. e.g: Right click on drawable directory in the project and choose New -> Vector Asset and select local file.
App Context should be stored at the beggining once in appCtx
.
Current Context should be stored at the beggining once in ctx
.
appCtx example in fragment(change to getApplicationContext in activity):
private Context appCtx;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
appCtx = getContext();
}
ctx example:
final Context ctx = LoginActivity.this;
Static and standard reusable variables should be stored in StaticGlobalVariables.java.
Deleting the wiki page 'Code Standards' cannot be undone. Continue?