0% found this document useful (0 votes)
63 views

Reviewed By: Page #: 01 Reviewed Date: Application Name: Purchase Requisition TMS Id (If Applicable) 90200 Review Category (Select)

The document is a code review for an application with 27 items reviewed. The reviewer assessed the application's structure, entity object implementation, view objects, view criteria, source code, popups, and application module implementation. Most items were marked as "Done" and status was verified on August 31, 2019. A few items were marked as "Yet to be resolved" regarding setting properties and handling precision.

Uploaded by

GL02APR2020
Copyright
© © All Rights Reserved
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views

Reviewed By: Page #: 01 Reviewed Date: Application Name: Purchase Requisition TMS Id (If Applicable) 90200 Review Category (Select)

The document is a code review for an application with 27 items reviewed. The reviewer assessed the application's structure, entity object implementation, view objects, view criteria, source code, popups, and application module implementation. Most items were marked as "Done" and status was verified on August 31, 2019. A few items were marked as "Yet to be resolved" regarding setting properties and handling precision.

Uploaded by

GL02APR2020
Copyright
© © All Rights Reserved
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
You are on page 1/ 6

Reviewed by : Vikrant Verma

Review Category (select): Peer Page # : 01


Reviewed Date : 31 August 2019
Module: Material Management
Application Name : Purchase Requisition
TMS Id (If Applicable) 90200

Sr.No. Scope Description Status External link/Remark Action Taken Verified Verified On

1 Structure ADF Faces requires only one root component per fragment. So Done Not Required YES 31 August 2019
always define in Parent Component in a fragment.

2 Structure Packages and naming conventions must be followed Done VO and VL need keep in Right Folder. Yet to be resolved YES 31 August 2019

Ensure uniqueness of taskflow name and managed bean name in


entire application
Task Flow and Pages names are
3 Structure Like a taskFlow to be used in Sales Order for creating sales order Done Not Required YES 31 August 2019
different
may be named as "SLSCreateEditTF".

4 Structure Create a common folder to keep fragments and avoid conflicts. Done jsff pages are in Fragment folder Not Required YES 31 August 2019

Images on links should be used from AppImagelnk.jar only. No No External images used in the
5 Structure Done Not Required YES 31 August 2019
other images should be included in the Application on local level. application.

Remove all the single selection Lov from Tables used for Showing
6 Structure Done Not Required YES 31 August 2019
Name instead of Id's.
Use render=false instead of visible=false for UI Components as in
7 Structure case of visible=false, components are sent to client and available in Done Not Required YES 31 August 2019
scope

Avoid default ADF search (af:query) instead of it try to use


8 Structure executeWithParams or Custom ADF Search form to ensure proper Done Not Required YES 31 August 2019
validations and other features like 'autosuggest'.
Local css and resource.java and Connection should be removed
9 Structure Done Not Required YES 31 August 2019
before deployment.
For UI component like panelStretchLayout, panelTab, panelSplitter PurchaseRequisitionPage Pgl1:pt1 ,
10 Structure set property dimension from = children or disclosed child Done SrchPurReqPage pgl2:psl1 need to Yet to be resolved YES 31 August 2019
whichever is possible. set

ItmAmtBs and ItmAmtSp in


Always handle precision and scale when using quantitative values. Done ItmBudgetHstryVwVO. BalQty in
11 Structure Yet to be resolved YES 31 August 2019
(fields not more than 26,6) TotPendToRcvQty. ConvFctr in
UomVldnChkVO

12 Structure Horizontal scroll should not appear in any of the Application Pages. Done Not Required YES 31 August 2019
If there are large number of Columns in a table and if all are not
being shown in tha table then Horizontal scroll should appear in
13 Structure Done Not Required YES 31 August 2019
the table. Vertical Scroll should also appear in the table where
number of Rows is greater than height.

If you are using filter for description field, use FilterFeatures


14 Structure Done Not Required YES 31 August 2019
property to specify case-insensitive search.

15 EoImpl Never tamper with EntityObject Impl enums Done Not Required YES 31 August 2019
16 EoImpl Always match indexing in EnityObject and ViewObject. Done Not Required YES 31 August 2019

Upper case for string for needs to be removed from ViewCriterias


17 VC from the Appilcations where there is no requirement for Upper Done Not Required YES 31 August 2019
Case. As default all the bind variables are in UpperCase

For all search criteria always use “Contains” and not “Start with”
18 VC where In autoSuggest you need to give Search.For all search Done Not Required YES 31 August 2019
criteria always use “Contains” and not “Start with” where In
autoSuggest you need to give Search.

Never use ROWID as a primary key in the Entity or ViewObject.


19 VO Done Not Required YES 31 August 2019
Always define a Primary key in Entity and View Object.

Always use "At Most One Row" in ViewObject Tuning in case when
20 VO we need viewObject to create Row. Done Not Required YES 31 August 2019

(If there is a large EL expression in a field then shorten it or write it


in bean) Avoid hard-coding EL literals - Avoid hard-coding literals in
EL expressions. Instead place the hard-coding in a managed bean
21 Source code and refer to it through a Boolean accessor Done Not Required YES 31 August 2019
instead. For example the EL expression
#{bindings.Status.inputValue == 'Updateable'}
could be replaced with #{editBookings.updateable}.

While writing EL use operators suggested by the framework on


22 Source code Done Not Required YES 31 August 2019
Page Level.

All the PopUp for both pages need to


23 Popup Consider animation-enabled false for better browser performance. Done set animate property as 'False' as of Yet to be resolved YES 31 August 2019
now it is Default.

24 Popup Avoid editable tables in pop-up, If possible never use editable Done Not Required YES 31 August 2019
tables on Pop-up

Write custom code to check required fields on pop up, don't set
25 Popup Done Not Required YES 31 August 2019
any field required on pop up using required true property.
Removed un-used Instances of ViewObject added in
26 AmImpl Done Not Required YES 31 August 2019
ApplicationModule.

Never make method with same name that Application Used


27 AmImpl Done Not Required YES 31 August 2019
Internally.eg. reset,remove,etc. Refer Oracle Docs for this.

Always use helper class to write java methods and call them inside
the main bean or application module.
This helps in
1. Maintaining the size of the ApplicationModule and bean classes.
Helper class is not available while
2. Further these classes should be static that is like a service.
28 AmImpl Done many methods from AMImpl can be Yet to be resolved YES 31 August 2019
3. Never define global variables in a helper class.
moved to Helper
4. Helps in standardization of the Application.
5. Helps in optimizing the performance as the Object size
decreases.Always use helper class to write java methods and call
them inside the main bean or application module.

29 AmImpl Call database functions and procedures using ADFUtils.jar Done Not Required YES 31 August 2019
30 AmImpl Use ADFUtil to call frequently required methods. Done Not Required YES 31 August 2019
Avoid repetitive database functions/procedures call in accessors of
31 AmImpl Done Not Required YES 31 August 2019
any IMPL class.

In MMPurchaseRequisitionAMImpl
Catch JBO exceptions/errors while calling database
very few are resolved with
32 AmImpl function/procedure and show as a message on page instead of Done Yet to be resolved YES 31 August 2019
'JboException' and other are using
default ADF/DB generated error messages
only 'Exception'

Use createRowSetIterator() for view object programmatic iteration


instead of using getRowSetIterator() as getRowSetIterator gives
the instance of the current iterator on the page, this may give you
33 Am/Row Impl less or more rows depending on the range of the binding in on the Done Not Required YES 31 August 2019
page.
While createRowSetIterator() creates a new iterator and gives all
the rows of the viewObject

34 Am/Row Impl Avoid SetWhereClause(), create and use ViewCriteria instead of Done Not Required YES 31 August 2019
this.
Remove all the globally referenced variables defined in
35 Am/Row Impl Done Not Required YES 31 August 2019
ApplicationModuleImpl from Applications.

“rs” is not closed in


36 Impl/bean Always close Iterators after the use. Done Yet to be resolved YES 31 August 2019
AppCostCenterServiceAMImpl
Currently only String is used in both
37 Impl/bean Avoid String, try to use StringBuilder or StringBuffer. Done Yet to be resolved YES 31 August 2019
the Bean fies.
Always check for null values instead of using try/catch block
38 Impl/bean Done Not Required YES 31 August 2019
everywhere.
For static conditions , don't use repetitive code in managed bean.
39 Impl/bean Create a static methods for commonly used methods. This Done Not Required YES 31 August 2019
enhances the performance.
Do not call postChanges unless you can guarantee a commit or
40 Impl/bean Done Not Required YES 31 August 2019
rollback
Always check for null values while calculating in ViewObject using
41 Impl/bean Done Not Required YES 31 August 2019
transient variable's default values.

42 Impl/bean Always check for null values before comparing values in the code. Done Not Required YES 31 August 2019

43 Impl/bean Avoid unnecessary Type Casting. Done Not Required YES 31 August 2019

44 Impl/bean While using global variables, ensure that null values are handled Done Not Required YES 31 August 2019
with a default value.

Comments are not available before


the methods in
45 Impl/bean Always add comments in code before Method. Done PurchaseRequisitionBean, Yet to be resolved YES 31 August 2019
MMPurchaseRequisitionAMImpl,
SearchPurReqBean.

Never Use Static Variables to store changeable values in any of the


46 Impl/bean Done Not Required YES 31 August 2019
Class in the Application, except for Declaring the constants.

logger not used in


PurchaseRequisitionBean,
47 Impl/bean Use ADFLogger instead of System.out.println() Done MMPurchaseRequisitionAMImpl, Yet to be resolved YES 31 August 2019
SearchPurReqBean.

Remove the Redundent Calls in the getters for showing the Names
48 Impl/bean in the InputText Lovs. This is mandatory to check in all the Done Not Required YES 31 August 2019
Applications.

Use of getFilteredRow and RowQualifier should not be used for


Querying full table. As RowQualifier of FilteredRows runs on the
49 Impl/bean whole table. It first loads the data in the memory and then Done Not Required YES 31 August 2019
performs the operations. Its okay if the Iterations is done for the
rows of a particular Transaction.

50 Impl/bean Use Iterative method to develop the code (functions) Done Not Required YES 31 August 2019

51 Impl/bean Write custom code to check required fields on pop up, don't set Done Not Required YES 31 August 2019
any field required on pop up using required true property.

As a general rule, single commit should be used for a transaction in


a page. For example, if there is a master detail relationship in a
52 Impl/bean page, for all records in master and detail tables will be saved in the Done Not Required YES 31 August 2019
database using a single commit. Partial commit will be used when
it is impossible to manage the transaction with a single commit.
53 Impl/bean Never write duplicate code. Done Not Required YES 31 August 2019
Avoid using ViewCriteria. If required then apply it in the
54 Impl/bean Done Not Required YES 31 August 2019
Application Module Itself.

Never Use Component Bindings in the PageFlowScope. If its


mandatory to use Component Binding then the Bindings should me
made in a Bean with Request Scope or ViewScope. If scope of the
55 Bean Not Done “prItmTbl” in purchaseRequisitin page Yet to be resolved YES 31 August 2019
bean is session, avoid using static variables or reset them to the
initial value after using them.
In the first place never use a Bean in Session Scope.

Always keep the Business logic and Database related code and
56 Bean Done Not Required YES 31 August 2019
objects in the Model Layer.
Avoid creating binding for UI components. Instead of that Value
57 Bean Done Not Required YES 31 August 2019
should be set by VO.
31 August 2019

58 Ethics Always make checkpoints in the code while the development. Done Not Required YES 31 August 2019

Test thoroughly before using new methods or methodology in the Done


59 Ethics Not Required YES 31 August 2019
code.

60 Miscellaneous Don't define circular list of value dependencies. Done Not Required YES 31 August 2019

Implement bean serialization for applicationScope, sessionScope, Serializable not implemented in the
61 Miscellaneous Done Yet to be resolved YES 31 August 2019
pageFlowScope beans. bean as the scope is 'pageFloeScope'

Always add schema name with the table while writing queries ex :
62 Miscellaneous Done Not Required YES 31 August 2019
select eo_Id from app.app.$eo$prf;
63 Miscellaneous All the number Fields on Page should be Right Aligned. Done Not Required YES 31 August 2019

64 Miscellaneous All the number Fields on Page should have Proper decimal Digits. Done Not Required YES 31 August 2019

65 Miscellaneous All the Date Fields on Page should have Proper Date Format. Done “id4' in Purchaserequisition page Yet to be resolved YES 31 August 2019

When we want to show description from ID then instead of setting


66 Am/Row Impl the value of Description attribute with setter or Done Not Required YES 31 August 2019
setAttributeInternal we must maintain a variable.

While navigating from searchTF to createTF, do not write code to


handle conditions for 'Add' and 'View'. Instead use two instances
of CreateTF and pass parameters mode= 'C' or 'V' to distinguish.
67 Miscellaneous Then upon reaching the createTF use a router for distinction. If Done Not Required YES 31 August 2019
mode is 'C' then use createInsert and if 'V' then execute a query to
fetch the selected document.
We use a query to populate values in an LOV and also a query to
68 Miscellaneous show the description of selected ID in view mode. The 2 queries Done Not Required YES 31 August 2019
should not be the same.
Never add a new jar to the container from the local machine
69 Miscellaneous Done Not Required YES 31 August 2019
instead add it from main machine itself.

You might also like